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 è ilcase
istruzione. Otherwise, assign a value of
0`. - 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.