Dúvida com SUM() e GROUP BY

03/05/2010

0

Boa tarde. Estou encontrando uma dificuldade em uma SQL que tenho que desenvolver. Ela deve trazer a soma de todos os problemas que ocorreram em determinado dia. No entanto ela traz várias vezes a mesma data com "pedaços" dos problemas   Como Fica   sum      data    1544     26/04 2563     26/04   Como deveria ficar sum     data   4107    26/04   Segue a SQL para análise:   SELECT sum, to_char(dt_hora, 'dd/MM') AS DATA FROM (SELECT sum(qtd), cab.dt_hora
FROM tb_aponta_quali_acaba_itens lanc
JOIN tb_aponta_quali_acaba cab ON lanc.seq_apont_quali_acaba = cab.seq_apont_quali_acaba
JOIN tb_turnos turno ON cab.cod_turno_insp = turno.cod_turno
JOIN tb_aponta_quali_acaba data ON cab.dt_hora = data.dt_hora
GROUP BY cab.dt_hora) AS TESTE GROUP BY sum, DATA ORDER BY DATA   Penso que este problema possa ocorrer pois as datas tem horas diferentes de cadastro, mas teria como ignorar o horário e fazer a soma apenas baseado no dia e mês?   Muito obrigado,   Lucas Hoffmann
Lucas Hoffmann

Lucas Hoffmann

Responder

Post mais votado

03/05/2010

Veja se funciona
SELECT
  SUM(Qtd),
  to_char(cab.dt_hora, 'dd/MM') AS DATA
FROM 
  tb_aponta_quali_acaba_itens lanc
    JOIN tb_aponta_quali_acaba cab ON lanc.seq_apont_quali_acaba = cab.seq_apont_quali_acaba
    JOIN tb_turnos turno ON cab.cod_turno_insp = turno.cod_turno
    JOIN tb_aponta_quali_acaba data ON cab.dt_hora = data.dt_hora
GROUP BY
  to_char(cab.dt_hora, 'dd/MM')
ORDER BY
  2


Espero ter colaborado.

Wilson Junior

Wilson Junior
Responder

Mais Posts

03/05/2010

Lucas Hoffmann

A SQL funciona perfeitamente. O único problema que estou tendo é que devo colocá-la em um listview e fazer o Select através do código do programa nesse listview, aí encontro o problema que diz: "ERRO: faltando entrada para tabela "cab" na cláusula FROM"  Aqui segue a SQL modificada, a parte que está dentro do FROM é a parte que dará origem ao listview:  
SELECTsum, to_char(cab.dt_hora, 'dd/MM') AS data FROM (SELECT
  SUM(Qtd),
  to_char(cab.dt_hora, 'dd/MM') AS data
FROM 
  tb_aponta_quali_acaba_itens lanc
    JOIN tb_aponta_quali_acaba cab ON lanc.seq_apont_quali_acaba = cab.seq_apont_quali_acaba
    JOIN tb_turnos turno ON cab.cod_turno_insp = turno.cod_turno
    JOIN tb_aponta_quali_acaba data ON cab.dt_hora = data.dt_hora
GROUP BY
  to_char(cab.dt_hora, 'dd/MM') ) as teste
Responder

03/05/2010

Wilson Junior

1° - de quais tabelas você está retornando os campos Data e Qtde?
2° - pode ser retornado em um SQL sem subselect no FROM?
3° - é utilizado mais algum campo no retorno do SQL?

Aguardo retorno para melhor lhe ajudar.
Responder

03/05/2010

Lucas Hoffmann

Cara, muito obrigado pela ajuda, mas acabo de resolver meu problema, heheh. Mesmo assim a tua SQL foi de graaande ajuda. Valeu mesmo.   Lucas Hoffmann
Responder

03/05/2010

Wilson Junior

Ótimo que conseguiu resolver. Mas post aí a solução para os colegas poderem ver a solução também.

Opa! Pelo que vi somos da mesma cidade...
Espero ter colaborado.
Responder

04/05/2010

Lucas Hoffmann

O que eu fiz foi apenas criar uma view com o nome de view_rel_media_ppus com esse código:  
 SELECT sum(lanc.qtd) AS sum, to_char(cab.dt_hora, 'dd/MM'::text) AS data
   FROM tb_aponta_quali_acaba_itens lanc
   JOIN tb_aponta_quali_acaba cab ON lanc.seq_apont_quali_acaba = cab.seq_apont_quali_acaba
   JOIN tb_turnos turno ON cab.cod_turno_insp = turno.cod_turno
   JOIN tb_aponta_quali_acaba data ON cab.dt_hora = data.dt_hora
  GROUP BY to_char(cab.dt_hora, 'dd/MM'::text)
  E agora consigo acessar ela através do sistema com um:   SELECT * FROM view_rel_media_ppus   Pois é, também percebi que somos da mesma cidade. =D Ajudou mesmo, valeu.   Lucas Hoffmann
Responder

04/05/2010

Wilson Junior

Só um conselho, não utilize alias com palavras reservadas, como você fez com o "sum(lanc.qtd) AS sum", pois para alguns BD isto não é possível. Utilize por exemplo "sum(lanc.qtd) AS sumQtd".

Espero ter colaborado.
Responder

04/05/2010

Lucas Hoffmann

Pois é, eu percebi isso logo após ter postado e modifiquei para Qtd mesmo. ^^   Muito obrigado,   Lucas Hoffmann
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar