Envez de escrever WHEN PRECO_DE_LISTA >= 7 AND PRECO_DE_LISTA < 12 THEN 'PRODUTO EM CONTA' . Eu poderia utilizar o between para pegar os valores que estariam entre o 12 e o 7 ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Envez de escrever WHEN PRECO_DE_LISTA >= 7 AND PRECO_DE_LISTA < 12 THEN 'PRODUTO EM CONTA' . Eu poderia utilizar o between para pegar os valores que estariam entre o 12 e o 7 ?
Oi, João! Tudo bem?
Desde já, peço desculpas pela demora em retornar.
A resposta para sua pergunta é: depende!
Dependendo das sentenças usadas no CASE e da forma com que elas foram organizadas, é possível sim utilizar o BETWEEN. No entanto, vale ressaltar que ele também inclui os seus extremos (como o 12 e o 7), e nem sempre queremos que estes valores façam parte da condição.
Para uma melhor compreensão, observe o CASE criado em aula:
(CASE
WHEN PRECO_DE_LISTA >= 12 THEN 'PRODUTO CARO'
WHEN PRECO_DE_LISTA >= 7 AND PRECO_DE_LISTA < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO'
END)Note que, para o produto ser considerado "em conta", ele deve ser maior ou igual a 7 e inferior a 12. Veja agora o mesmo código só que com o BETWEEN:
(CASE
WHEN PRECO_DE_LISTA >= 12 THEN 'PRODUTO CARO'
WHEN PRECO_DE_LISTA BETWEEN 7 AND 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO'
END)Ao usar o BETWEEN, no entanto, perdemos tal comparação, haja vista que os valores considerados "em conta" serão não apenas os valores entre 7 e 12, mas também os próprios 7 e 12.
De maneira geral, o BETWEEN faz a seguinte análise:
preco_de_lista >= 7preco_de_lista <= 12Se as duas comparações forem verdadeiras, então a condição global também é verdadeira, o que pode gerar um conflito em nossa consulta, uma vez que já existe uma análise de igualdade em preco_de_lista >= 12.
Neste cenário em específico, caso o BETWEEN esteja no segundo WHEN, a comparação que verifica se preco_de_lista é igual a 12 permanece apenas no primeiro WHEN. Por outro lado, com o CASE abaixo a situação é diferente:
(CASE
WHEN PRECO_DE_LISTA BETWEEN 7 AND 12 THEN 'PRODUTO EM CONTA'
WHEN PRECO_DE_LISTA >= 12 THEN 'PRODUTO CARO'
ELSE 'PRODUTO BARATO'
END)A partir dele, temos o primeiro WHEN com a cláusula BETWEEN. Os produtos com o valor igual a 12 serão registrados como "em conta", descartando a comparação preco_de_lista >= 12, presente agora no segundo WHEN.
Com essa modificação, foram perdidos alguns dados importantes, não é mesmo? Alguns produtos antes considerados "caros" agora são tidos como "em conta"!
Sendo assim, pode utilizar o BETWEEN para simplificar o código que verifica os produtos que estão em conta. Contudo, é importante analisar se não existem informações sendo perdidas neste processo!
João, espero ter ajudado. Se surgir alguma dúvida após a minha explicação ou durante os seus estudos, fico à disposição.
Um forte abraço!