Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Parametros do Select

Bom, na explicação desse tópico https://cursos.alura.com.br/forum/topico-condicao-case-190487 vemos o uso do select da seguinte forma:

SELECT 
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 AS 'CLASSIFICAÇÃO',
AVG([PREÇO DE LISTA]) as 'Média'
FROM
[TABELA DE PRODUTOS]
GROUP BY 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

Queria entender do porque o select não dizer o que está selecionando, eu não sabia que ele poderia ser usado dessa forma. Ou por acaso fica implícito o que está sendo selecionando quando vemos dentro do CASE?

E por último queria agradecer a explicação da Danielle no tópico em questão, me tirou muitas das minhas duvidas, parabéns.

2 respostas
solução!

Boa tarde Marcus,

Nesse caso o 'case' é utilizado como um 'if', então pro primeiro campo eu faço um critério de retorno e não o retorno exato apenas replicando o campo.

O 'select' representa que vc está selecionando x campos, dentro de uma lógica construída na query para o retorno. Dessa forma não importa a condição de cada campo de retorno, desde que ela compile para tornar o código em um resultado.

A seleção do 'select' nessas condições de 'case' é o nome dado ao campo após o 'as' - Campo 1 e Campo 2, conforme código abaixo. Aconselho-te a quando for realizar um query, organize-a para o melhor entendimento, abaixo segue a mesma query porém do jeito que eu monto diariamente as minhas.

SELECT 
            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                                               AS [CLASSIFICAÇÃO],   --Campo 1

            AVG([PREÇO DE LISTA])                                                   as [Média]   -- Campo 2

                FROM [TABELA DE PRODUTOS]


    GROUP BY 
            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

Espero ter ajudado.

Abraço!!!

Opa valeu mesmo Stefano, ajudou sim. Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software