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 ärcase
uttalande. Otherwise, assign a value of
0`. - 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.