Vermoedelijk is dit het deel dat u moeilijk kunt begrijpen:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Dit is eigenlijk een eenvoudige aggregatiequery. Wat de query doet is:
- Bekijk elke rij in
employees
- Als
jobname
is'Analyst'
wijs vervolgens de waarde van1
. toe (dit is hetcase
verklaring. Otherwise, assign a value of
0`. - Aggregatie per afdeling, waarbij de zojuist berekende waarde wordt opgeteld. Dit heeft als effect dat het aantal analisten wordt geteld.
case
is een expressie die een waarde retourneert. De sum()
is simpelweg die waarde voor elke groep optellen.