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 é ocasedeclaração. Otherwise, assign a value of0`. - 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.