CASE WHEN
Parte da seção Além do Básico do Journey de SQL da Coddy — lição 1 de 27.
Uma expressão CASE é um if/else if/else para SQL. Ela reside dentro de SELECT (ou ORDER BY, ou WHERE) e produz um valor por linha.
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM studentsCada WHEN é verificado de cima para baixo; a primeira correspondência vence. O ELSE é opcional. Sem ele, as linhas que não correspondem recebem NULL.
Sempre termine com END e dê um nome à coluna com AS.
Desafio
FácilTabelas e colunas disponíveis:
<strong>employees</strong>:<strong>id</strong>,<strong>name</strong>,<strong>department</strong>,<strong>salary</strong>
Para cada funcionário, retorne seu name, department e uma coluna tier construída desta forma:
'partner'quandosalary >= 150000(qualquer departamento)'senior'quandodepartment = 'eng'esalary >= 100000'mid'quandosalary >= 60000'entry'caso contrário
Ordene por salary em ordem decrescente. Observe que a ordem das cláusulas WHEN importa: a primeira correspondência vence.
Folha de consulta
CASE age como um if/else dentro do SELECT, produzindo um valor por linha:
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
ELSE 'F'
END AS grade
FROM students- As condições são verificadas de cima para baixo; a primeira correspondência vence
ELSEé opcional — sem ele, as linhas que não corresponderem retornamNULL- Sempre feche com
END; useASpara nomear a coluna
Experimente você mesmo
SELECT name, department,
-- nível com múltiplas ramificações WHEN que misturam salary e department
FROM employees
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.