1
resposta

Dúvida sobre GROUP BY em CASE

Por que nesse código tenho que utilizar o group by para rodar:

SELECT [NOME DO PRODUTO], CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO' WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA' ELSE 'PRODUTO BARATO' END, AVG([PREÇO DE LISTA]) FROM [TABELA DE PRODUTOS] GROUP BY [NOME DO PRODUTO], CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO' WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA' ELSE 'PRODUTO BARATO' END

Enquanto no código abaixo não preciso do GROUP BY?

SELECT [NOME], CASE WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTOS' WHEN YEAR([DATA DE NASCIMENTO]) between 1990 and 1995 THEN 'JOVENS' ELSE 'CRIANÇAS' END FROM [TABELA DE CLIENTES]

Retirei do primeiro script a linha AVG([PREÇO DE LISTA]) mas não me parece ser isso a interferência.

1 resposta

Oii Benedito, tudo bem?

Na verdade, é sim por causa do AVG([PREÇO DE LISTA]). Por o AVG ser uma função de agregação, precisamos do GROUP BY para agrupar as linhas que possuem semelhanças entre elas.

Espero ter ajudado. Qualquer dúvida me fale, tá bom? :)