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
jobnameis'Analyst'wijs vervolgens de waarde van1. toe (dit is hetcaseverklaring. Otherwise, assign a value of0`. - 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.