SUM COM CRITERIO DE SEMANA

07/06/2019

0

Como eu faço uma query utilizando a seguinte ideia, preciso somar intervalos de data de 7 em 7 dias, para apresentar esses dados em B.I (gráfico)
Ex.

01 a 07/06
14/06 a 22/06
23/06 a 30/06

Sem ter que utilizar o CASE, uma forma automatica. E possivel?
Mario Castilho

Mario Castilho

Responder

Posts

07/06/2019

Thiago Moreno

Como eu faço uma query utilizando a seguinte ideia, preciso somar intervalos de data de 7 em 7 dias, para apresentar esses dados em B.I (gráfico)
Ex.

01 a 07/06
14/06 a 22/06
23/06 a 30/06

Sem ter que utilizar o CASE, uma forma automatica. E possivel?

voce vai usar um select para cada semana fazer um union desses selects. Esse exemplo é para mysql. Ele pega o dia atual calculando as 4 ultimas semanas. Esse select é fixo. pega sempre as 4 ultimas semanas. Mas voce pode adapta-lo agrupando pela funcao week e passando seu intervalo de datas, para ele quebrar pelo numero da semana.

-- semana 1
select WEEK(curdate(), 0) semana,
   date_format(adddate(curdate(), 6 * -1), '%d/%m/%y') diainiciosemana,
   date_format(adddate(curdate(), 0 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor            
from venda            
where data_venda between adddate(curdate(), 6 * -1) and adddate(curdate(), 0 * -1)

union all  
          
-- semana 2
select week(adddate(curdate(), 7 * -1), 0) semana,
   date_format(adddate(curdate(), 13 * -1), '%d/%m/%y') diainiciosemana,
   date_format(adddate(curdate(), 7 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor
from venda           
where data_venda between adddate(curdate(), 13 * -1) and adddate(curdate(), 7 * -1)

union all 

-- semana 3
select week(adddate(curdate(), 14 * -1), 0) semana,
   date_format(adddate(curdate(), 20 * -1), '%d/%m/%y') diainiciosemana,
   date_format(adddate(curdate(), 14 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor
from venda           
where data_venda between adddate(curdate(), 20 * -1) and adddate(curdate(), 14 * -1)

union all           

-- semana 4
select week(adddate(curdate(), 21 * -1), 0) semana,
   date_format(adddate(curdate(), 27 * -1), '%d/%m/%y') diainiciosemana,
   date_format(adddate(curdate(), 21 * -1), '%d/%m/%y') diafimsemana, ifnull(sum(valor_venda), 0) as valor
from venda           
where data_venda between adddate(curdate(), 27 * -1) and adddate(curdate(), 21 * -1)


Responder

07/06/2019

Mario Castilho

Como que vc faria nesse select

SELECT

COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui


FROM TAB_FRC_ENTRAD_CL


Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca
Responder

07/06/2019

Thiago Moreno

Como que vc faria nesse select

SELECT

COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui


FROM TAB_FRC_ENTRAD_CL


Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca


qual é o banco de dados?? como eu falei aquele exemplo é com mysql pq ele tem as funcoes que retornam a semana e que manipulam data, tem que ver quais sao essas funcoes do seu banco de dados.
Responder

07/06/2019

Jesus Lima

Como que vc faria nesse select

SELECT

COD_EMPR,
TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
sum(Liqui)Liqui


FROM TAB_FRC_ENTRAD_CL


Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,
cont_dia_balanca


Veja se dessa forma te ajuda

SELECT 
COD_EMPR,
--TO_CHAR(cont_dia_balanca,'DD/MM/YYYY') AS CONT_DIA_BALANCA,
to_char(CONT_DIA_BALANCA,'W') as NUMERO_SEMANA,
sum(Liqui)Liqui
FROM TAB_FRC_ENTRAD_CL 
Where cod_empr not in ('10')
AND CONT_DIA_BALANCA >='01/01/2019'
and din_frente_1 not in ('2034','2035','2036')
group by COD_EMPR,to_char(CONT_DIA_BALANCA,'W')
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar