Presumiblemente, esta es la parte que te cuesta entender:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Esta es una consulta de agregación simple, en realidad. Lo que está haciendo la consulta es:
- Observe cada fila en
employees - Si
jobnamees'Analyst'luego asigne el valor de1(este es elcasesentencia. Otherwise, assign a value of0`. - Agregar por departamento, sumando el valor recién calculado. Esto tiene el efecto de contar el número de analistas.
case es una expresión que devuelve un valor. El sum() es simplemente sumar ese valor para cada grupo.