Förmodligen är detta den del du kämpar för att förstå:
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Detta är egentligen en enkel aggregeringsfråga. Vad frågan gör är:
- Titta på varje rad i
employees - Om
jobnameär'Analyst'tilldela sedan värdet1(detta ärcaseuttalande. Otherwise, assign a value of0`. - Aggregera efter avdelning, summera det nyss beräknade värdet. Detta har till följd att antalet analytiker räknas.
case är ett uttryck som returnerar ett värde. sum() är helt enkelt att lägga ihop det värdet för varje grupp.