Vermutlich ist dies der Teil, den Sie nur schwer verstehen können:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Dies ist wirklich eine einfache Aggregationsabfrage. Was die Abfrage tut, ist:
- Sehen Sie sich jede Zeile in
employees
an - Falls
jobname
ist'Analyst'
weisen Sie dann den Wert1
zu (Dies ist dercase
Anweisung. Otherwise, assign a value of
zu 0`. - Aggregieren nach Abteilung, Summieren des gerade berechneten Werts. Dies hat den Effekt, dass die Anzahl der Analysten gezählt wird.
case
ist ein Ausdruck, der einen Wert zurückgibt. Die sum()
addiert einfach diesen Wert für jede Gruppe.