SUM COM CRITERIO DE SEMANA
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?
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
Curtidas 0
Respostas
Thiago Moreno
07/06/2019
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?
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)
GOSTEI 0
Mario Castilho
07/06/2019
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
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
GOSTEI 0
Thiago Moreno
07/06/2019
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
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.
GOSTEI 0
Jesus Lima
07/06/2019
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
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')
GOSTEI 0