4
respostas

Classificação

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

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:

Captura de tela, tabela do ORACLE SQL, onde foi destacado em vermelho, na linha de índice 13, NOME:Edson Meirelles, LIMITE_CREDITO: 150000, Resultado da consulta: "Clientes grandes"_

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:

Captura de tela, tabela do ORACLE SQL, onde foi destacado em vermelho, na linha de índice 13, NOME:Edson Meirelles, LIMITE_CREDITO: 150000, Resultado da consulta: "Clientes grandes"

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:

Captura de tela, tabela do ORACLE SQL, onde foi destacado em vermelho, na linha de índice 13, NOME:Edson Meirelles, LIMITE_CREDITO: 150000, Resultado da consulta: "Clientes medios"

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Entendi, Paulo. Excelente explicação! Obrigado!