Presumivelmente, esta é a parte que você está lutando para entender:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Esta é uma consulta de agregação simples, na verdade. O que a consulta está fazendo é:
- Veja cada linha em
employees
- Se
jobname
é'Analyst'
em seguida, atribua o valor de1
(este é ocase
declaração. Otherwise, assign a value of
0`. - Agregar por departamento, somando o valor calculado. Isso tem o efeito de contar o número de analistas.
case
é uma expressão que retorna um valor. A sum()
é simplesmente somar esse valor para cada grupo.