Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment la somme avec l'instruction conditionnelle de cas fonctionne-t-elle dans sql

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 jobname est 'Analyst' puis attribuez la valeur de 1 (c'est le case instruction. Otherwise, assign a value of 0`.
  • 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.