Olá, eu não compreendi muito bem em qual situações não podemos utilizar o when. Achei que quando tivesse funções de agregações não era possível utilizar, mas nessa aula ele utiliza mesmo com o SUM(INF.QUANTIDADE)
Olá, eu não compreendi muito bem em qual situações não podemos utilizar o when. Achei que quando tivesse funções de agregações não era possível utilizar, mas nessa aula ele utiliza mesmo com o SUM(INF.QUANTIDADE)
Oi, Maitê! Tudo bom?
Acredito que a sua pergunta seja, na verdade, em relação à cláusula WHERE
, correto? Já que não utilizamos o WHEN
nas consultas desta aula. O WHERE
tem como objetivo filtrar os resultados com base em uma condição específica.
No exemplo da aula, o WHERE
é usado para filtrar os resultados pela condição YEAR(NF.DATA_VENDA) = 2015
, ou seja, apenas serão considerados os registros de vendas do ano de 2015. Isso é feito antes de agrupar as informações por sabor e data da venda.
Desse modo, com relação às funções de agregação, é possível usar o WHERE
desde que ele esteja antes da cláusula GROUP BY
. Caso esteja depois, o filtro é realizando a partir do HAVING
, visto que:
WHERE
é aplicado diretamente nas linhas de dados e permite selecionar apenas os registros que cumprem certa condição;HAVING
é aplicado aos resultados das operações de agregação (como SUM
e COUNT
), permitindo filtrar os conjuntos de dados já agregados.Não há uma regra fixa que determina quando devemos (ou não) trabalhar com o WHERE
, Maitê, isso dependerá do contexto da nossa consulta. :)
Espero que tenha ficado mais claro! Conforme ampliamos o nosso contato com esses recursos do SQL, menos abstratos tendem a ser suas aplicações.
Se aparecem novas dúvidas, estarei por aqui.
Um abraço, Maitê!
Isso, era do WHERE que eu estava me referindo. Obrigada pela explicação