Vraisemblablement, c'est la partie que vous avez du mal à comprendre :
select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
Il s'agit en fait d'une simple requête d'agrégation. Ce que fait la requête :
- Regardez chaque ligne dans
employees - Si
jobnameest'Analyst'puis attribuez la valeur de1(c'est lecaseinstruction. Otherwise, assign a value of0`. - Agréger par département, en additionnant la valeur qui vient d'être calculée. Cela a pour effet de compter le nombre d'analystes.
case est une expression qui renvoie une valeur. La sum() additionne simplement cette valeur pour chaque groupe.