Presumibilmente, questa è la parte che stai lottando per capire:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Questa è una semplice query di aggregazione, in realtà. Quello che sta facendo la query è:
- Guarda ogni riga in
employees - Se
jobnameè'Analyst'quindi assegna il valore di1(questo è ilcaseistruzione. Otherwise, assign a value of0`. - Aggregato per reparto, sommando il valore appena calcolato. Questo ha l'effetto di contare il numero di analisti.
case è un'espressione che restituisce un valore. Il sum() è semplicemente sommare quel valore per ogni gruppo.