- 1 exemplo de como utilizar a expressão condicional "if";
- 3 exemplos de como utilizar a expressão condicional "case";
EXPRESSÃO CONDICIONAL - IF
O uso do "If" é indicado quando temos que testar 1 condição. Esta expressão tem a funcionalidade de:
testar uma condição
se a condição for verdadeira, executa algo
se a condição for falsa, executa algo diferente
SINTAXE
IF(teste, 'verdadeiro', falso)
1º Exemplo
Cenário: em uma loja de informática temos que verificar o estoque de produtos. Se a quantidade de um determinado produto for maior que 50, vamos considerar que o estoque está alto, caso contrário vamos considerar que o estoque está baixo. Vamos utilizar a tabela "tb_estoque" para fazer esta verificação.
Veja a imagem da tabela "tb_estoque" abaixo:
SELECT
IF(quantidade > 50, 'alto', 'baixo') AS classificacao
FROM tb_estoque;
Após a execução da sentença, podemos ver o resultado na imagem abaixo:
EXPRESSÃO CONDICIONAL - CASE
O uso do "Case" é indicado quando temos que testar mais que 1 condição.
Esta expressão tem a funcionalidade de:
Testar uma condição
Se for verdadeira, executa algo e sai da instrução, senão vai para o próximo teste
Testar uma segunda condição
Se for verdadeira, executa algo e sai da instrução, senão vai para o próximo teste
Testar uma terceira condição
Se for verdadeira, executa algo e sai da instrução, senão vai para o próximo teste
... e assim por diante
1º Exemplo
Cenário: Serão distribuídos uniformes para times de futebol, de acordo com a seguinte regra:
- O time "A" receberá uniforme da cor "Amarela";
- O time "B" receberá uniforme da cor "Azul";
- O time "C" receberá uniforme da cor "Vermelha";
Para aplicar esta regra, executamos a sentença abaixo:
SELECT
time,
CASE
WHEN time = 'A' THEN 'Amarela'
WHEN time = 'B' THEN 'Azul'
WHEN time = 'C' THEN 'Vermelha'
END
AS cor_uniforme
FROM time_futebol;
Após a execução poderemos ver o resultado da distribuição das cores dos uniformes na imagem abaixo:
Significado
SELECT
time,
/*Inicie a condição com CASE*/
CASE
/*Quando o time for o A então receberá uniforme da cor Amarela*/
WHEN time = 'A' THEN 'Amarela'
/*Quando o time for o B então receberá uniforme da cor Azul*/
WHEN time = 'B' THEN 'Azul'
/*Quando o time for o C então receberá uniforme da cor Vermelha*/
WHEN time = 'C' THEN 'Vermelha'
/*Termine a condição com END*/
END
/*após os "AS" colocamos o nome da nova coluna que será exibida, ou seja cor_uniforme*/
AS cor_uniforme
FROM time_futebol;
Observações
- Inicie a condição com CASE;
- coloque WHEN para iniciar uma condição;
- após o THEN colocamos o resultado da condição se ela for verdadeira;
- coloque END para finalizar a condicão;
- após o AS colocaremos o nome da nova coluna que será exibida;
2º Exemplo
Cenário: queremos classificar o desempenho de cada aluno de acordo com a sua nota. Utilizaremos a seguinte regra:
Cenário: queremos classificar o desempenho de cada aluno de acordo com a sua nota. Utilizaremos a seguinte regra:
- se a nota for maior ou igual a 8.0 é ótimo;
- se a nota for maior ou igual a 6.0 é bom;
- se a nota for maior ou igual a 4.0 é regular;
- se a nota for maior ou igual a 2.0 é ruim;
- senão será péssimo
Para aplicar esta regra, executamos a sentença abaixo:
SELECT
aluno,
nota,
CASE
WHEN nota >= 8.0 THEN 'ótimo'
WHEN nota >= 6.0 THEN 'bom'
WHEN nota >= 4.0 THEN 'regular'
WHEN nota >= 2.0 THEN 'ruim'
ELSE 'péssimo'
END
AS desempenho
FROM tb_nota;
Após a execução poderemos ver o resultado do desempenho na imagem abaixo:
Significado:
SELECT
aluno,
nota,
/*Inicie a condição com CASE*/
CASE
/*se a nota for maior ou igual a 8.0 o desempenho é ótimo*/
WHEN nota >= 8.0 THEN 'ótimo'
/*se a nota for maior ou igual a 6.0 o desempenho é bom*/
WHEN nota >= 6.0 THEN 'bom'
/*se a nota for maior ou igual a 4.0 o desempenho é regular*/
WHEN nota >= 4.0 THEN 'regular'
/*se a nota for maior ou igual a 2.0 o desempenho é ruim*/
WHEN nota >= 2.0 THEN 'ruim'
/*senão é péssimo*/
ELSE 'péssimo'
/*Termine a condição com END*/
END
/*após os "AS" colocamos o nome da nova coluna que será exibida, ou seja desempenho*/
AS desempenho
FROM tb_nota;
3º Exemplo
Quantos alunos tiveram um desempenho ótimo?
Quantos alunos tiveram um desempenho regular?
Quantos alunos tiveram um desempenho ruim?
Quantos alunos tiveram um desempenho péssimo?
Classificação do desempenho
- se a nota for maior ou igual a 8.0 o desempenho é ótimo;
- se a nota for maior ou igual a 6.0 o desempenho é bom;
- se a nota for maior ou igual a 4.0 o desempenho é regular;
- se a nota for maior ou igual a 2.0 o desempenho é ruim;
- senão será péssimo
SELECT
CASE
CASE
WHEN nota >= 8.0 THEN 'ótimo'
WHEN nota >= 6.0 THEN 'bom'
WHEN nota >= 4.0 THEN 'regular'
WHEN nota >= 2.0 THEN 'ruim'
ELSE 'péssimo'
END AS desempenho,
COUNT(*) AS quantidade
FROM tb_nota
GROUP BY desempenho
ORDER BY desempenho;
Após a execução poderemos ver o resultado do desempenho na imagem abaixo:
SELECT
/*Inicie a condição com CASE*/
CASE
/*se a nota for maior ou igual a 8.0 o desempenho é ótimo*/
WHEN nota >= 8.0 THEN 'ótimo'
/*se a nota for maior ou igual a 6.0 o desempenho é bom*/
WHEN nota >= 6.0 THEN 'bom'
/*se a nota for maior ou igual a 4.0 o desempenho é regular*/
WHEN nota >= 4.0 THEN 'regular'
/*se a nota for maior ou igual a 2.0 o desempenho é ruim*/
WHEN nota >= 2.0 THEN 'ruim'
/*senão é péssimo*/
ELSE 'péssimo'
/*Termine a condição com END*/
END
/*após os "AS" colocamos o nome da nova coluna que será exibida, ou seja desempenho*/
AS desempenho,
/*A função COUNT faz a contagem por desempenho, ou seja quantos tiveram desempenho bom, ruim, etc
*Chamamos a coluna que exibirá a contagem de quantidade.
*/
COUNT(*) AS quantidade
FROM tb_nota
/*agrupa os desempenhos*/
GROUP BY desempenho
/*ordena a coluna desempenho em ordem alfabética*/
ORDER BY desempenho;
Em breve postaremos mais exemplos com expressões condicionais.