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
jobname
es'Analyst'
luego asigne el valor de1
(este es elcase
sentencia. Otherwise, assign a value of
0`. - 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.