Excelente resposta, Leonardo!
Parabéns pela resolução da atividade!
Qualquer dúvida estou à disposição. Bons estudos!
Uma dúvida... Em um video tinha visto que o BETWEEN é inclusivo. Nesse caso, o valor de 150000 não ficaria incluso nas duas primeiras classificações (Cliente grande e Cliente medio)?
Olá, Renoaldo, tudo beleza?
Muito bem observado! O BETWEEN é realmente inclusivo, acontece que neste caso quando a primeira condição satisfaz, a segunda não será verificada. Isso reduz a necessidade de gastar várias linhas de código para fazer esse tipo de verificação.
Para evitar possíveis erros, podemos ou limitar nosso BETWEEN para 149999, por exemplo, para não incluir este valor, ou utilizar operadores, como o exemplo abaixo:
SELECT NOME,LIMITE_DE_CREDITO,
(CASE WHEN LIMITE_DE_CREDITO >= 150000 THEN 'Clientes grandes'
WHEN LIMITE_DE_CREDITO < 150000 AND LIMITE_DE_CREDITO >= 110000 THEN 'Clientes medios'
ELSE 'Clientes pequenos' END)
FROM TABELA_DE_CLIENTES
Saída:
Este resultado é exatamente igual ao executado pelo colega acima. Segue o exemplo abaixo:
SELECT NOME,LIMITE_DE_CREDITO,
(CASE WHEN LIMITE_DE_CREDITO >= 150000 THEN 'Clientes grandes'
WHEN LIMITE_DE_CREDITO BETWEEN 110000 AND 150000 THEN 'Clientes medios'
ELSE 'Clientes pequenos' END)
FROM TABELA_DE_CLIENTES
Saída:
Mas se por exemplo, utilizar como foi utilizado por ele e invertêssemos a ordem, teríamos este problema:
SELECT NOME,LIMITE_DE_CREDITO,
(CASE WHEN LIMITE_DE_CREDITO BETWEEN 110000 AND 150000 THEN 'Clientes medios'
WHEN LIMITE_DE_CREDITO >= 150000 THEN 'Clientes grandes'
ELSE 'Clientes pequenos' END)
FROM TABELA_DE_CLIENTES
Saída:
O que não aconteceria se invertêssemos a de operadores ou se definirmos os limites do BETWEEN.
Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e um forte abraço!
Entendi, Paulo. Excelente explicação! Obrigado!