Case When Flashcards

(17 cards)

1
Q

Para que serve o comando CASE WHEN no SQL?

A

Para criar condições lógicas dentro da consulta, funcionando como uma estrutura condicional (if/else).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual é a estrutura básica do CASE WHEN?

A

CASE
WHEN condição1 THEN resultado1
WHEN condição2 THEN resultado2
ELSE resultado_padrão
END

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como usar CASE WHEN para classificar clientes por idade?

A

SELECT nome,
CASE
WHEN idade < 18 THEN ‘Menor de idade’
WHEN idade BETWEEN 18 AND 59 THEN ‘Adulto’
ELSE ‘Idoso’
END AS faixa_etaria
FROM clientes;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

CASE WHEN pode ser usado dentro de SELECT?

A

Sim, é o uso mais comum. Pode ser usado para criar colunas calculadas ou classificações condicionais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Posso usar CASE WHEN com ORDER BY?

A

Sim! Exemplo:

SELECT nome, status
FROM pedidos
ORDER BY
CASE
WHEN status = ‘Urgente’ THEN 1
WHEN status = ‘Normal’ THEN 2
ELSE 3
END;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como contar quantos clientes são adultos, usando CASE e SUM?

A

SELECT SUM(
CASE
WHEN idade >= 18 THEN 1
ELSE 0
END
) AS qtd_adultos
FROM clientes;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Posso usar CASE em uma cláusula WHERE?

A

Não diretamente. Mas é possível usar CASE para construir valores dentro de SELECT, ORDER BY, ou até mesmo GROUP BY.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Faça o seguinte critério de classificação para os produtos na tabela de Produtos:

Um PRODUTO CARO é aquele que tem um preço de lista maior ou igual a 12;
Um PRODUTO EM CONTA deve estar entre 7 e 12;
Um PRODUTO BARATO tem um preço de lista menor do que 7.

A

SELECT NOME_DO_PRODUTO, PRECO_DE_LISTA,
(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) AS CLASSIFICACAO
FROM TABELA_DE_PRODUTOS;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como usar CASE WHEN dentro de um WHERE para aplicar filtros diferentes?

A

CASE não pode ser usado diretamente no WHERE, mas você pode simular com expressões equivalentes. Exemplo com OR/AND:

SELECT * FROM clientes
WHERE (sexo = ‘M’ AND idade >= 18)
OR (sexo = ‘F’ AND idade >= 21);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Como usar CASE WHEN com WHERE usando subconsulta ou coluna derivada?

A

Utilize CASE em uma subquery:

SELECT * FROM (
SELECT nome, idade,
CASE
WHEN idade >= 18 THEN ‘Maior de idade’
ELSE ‘Menor de idade’
END AS classificacao
FROM clientes
)
WHERE classificacao = ‘Maior de idade’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Como filtrar resultados com base no valor retornado por um CASE?

A

Use uma CTE ou subconsulta com CASE e filtre a saída:

WITH clientes_classificados AS (
SELECT nome, idade,
CASE
WHEN idade < 18 THEN ‘Menor’
ELSE ‘Maior’
END AS faixa
FROM clientes
)
SELECT * FROM clientes_classificados
WHERE faixa = ‘Maior’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Por que CASE não funciona diretamente em WHERE?

A

Porque o WHERE espera uma expressão booleana (verdadeiro/falso) e o CASE retorna valores, não uma condição direta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Para que se usa CASE WHEN no ORDER BY?

A

Para definir ordens de classificação personalizadas, atribuindo pesos numéricos a cada condição.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Trazer alunos aprovados (‘A’) antes de reprovados (‘R’), depois ordenar pela nota DESC.

A

SELECT nome, status, nota
FROM alunos
ORDER BY
CASE status WHEN ‘A’ THEN 1 ELSE 2 END,
nota DESC;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Colocar clientes com debito > 0 no topo; restantes depois por nome.

A

SELECT nome, debito
FROM clientes
ORDER BY
CASE
WHEN debito > 0 THEN 1
ELSE 2
END,
nome;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Dica de performance ao usar CASE no ORDER BY.

A

Garanta que as condições do CASE sejam simples; índices não são aproveitados se funções complexas forem aplicadas à coluna.

17
Q

Para cada cliente, temos seus limites de crédito mensais. Liste somente os nomes dos clientes e os classifique por:

Acima ou igual a 150.000 de limite de crédito - Clientes grandes
Entre 150.000 e 110.000 de limite de crédito - Clientes médios
Menores que 110.000 de limite de crédito - Clientes pequenos

A

SELECT NOME,
(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