1
resposta

PROBLEMAS COM O RESULTADO USANDO WHEN

Olá, tentei praticar o que foi mostrado na aula, utilizando a tabela de clientes. Fiz um agrupamento por Cidade e a soma do volume de compras.

SELECT CIDADE,
SUM([VOLUME DE COMPRA]) AS 'SOMA DE COMPRAS'
FROM [TABELA DE CLIENTES]
GROUP BY CIDADE

/*
Rio de Janeiro    176500
São Paulo    124500
*/

Os resultados ficaram corretos, então tentei aplicar o WHEN conforme mostrado em aula.

SELECT CIDADE,
CASE WHEN [VOLUME DE COMPRA] >= 176500 THEN 'MAIOR COMPRADOR'
WHEN [VOLUME DE COMPRA] >= 124500 AND [VOLUME DE COMPRA] < 176500 THEN 'SEGUNDO LUGAR'
ELSE 'NÃO ATINGIU A META' END,
SUM([VOLUME DE COMPRA]) AS 'SOMA DE COMPRAS'
FROM
[TABELA DE CLIENTES]
GROUP BY CIDADE,
CASE WHEN [VOLUME DE COMPRA] >= 176500 THEN 'MAIOR COMPRADOR'
WHEN [VOLUME DE COMPRA] >= 124500 AND [VOLUME DE COMPRA] < 176500 THEN 'SEGUNDO LUGAR'
ELSE 'NÃO ATINGIU A META' END

/*
Rio de Janeiro    NÃO ATINGIU A META      176500
São Paulo          NÃO ATINGIU A META    124500
*/

O resultado não saiu como esperado. Vejam que RJ e SP sairam como "NÃO ATINGIU A META" . Porém RJ = 176500 então deveria ser "MAIOR COMPRADOR" e SP está dentro da faixa de "SEGUNDO LUGAR"

Alguém pode me ajudar entender o que aconteceu?

1 resposta

Boa noite Guilherme o resultado não foi esperado, devido a não ser possível que o WHEN fizesse a verificação para o resultado de SUM([VOLUME DE COMPRA]). Pesquise algo sobre armazenar o valor em uma variável ou subqueryes pra ver se consegue resolver esse problema...