Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie sum mit case-bedingter Anweisung in sql funktioniert

Vermutlich ist dies der Teil, den Sie nur schwer verstehen können:

  select deptno,
         sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
  from employees
  group by deptno

Dies ist wirklich eine einfache Aggregationsabfrage. Was die Abfrage tut, ist:

  • Sehen Sie sich jede Zeile in employees an
  • Falls jobname ist 'Analyst' weisen Sie dann den Wert 1 zu (Dies ist der case Anweisung. Otherwise, assign a value of zu 0`.
  • Aggregieren nach Abteilung, Summieren des gerade berechneten Werts. Dies hat den Effekt, dass die Anzahl der Analysten gezählt wird.

case ist ein Ausdruck, der einen Wert zurückgibt. Die sum() addiert einfach diesen Wert für jede Gruppe.