Oracle
 sql >> Database >  >> RDS >> Oracle

Come funziona la somma con l'istruzione condizionale case in sql

Presumibilmente, questa è la parte che stai lottando per capire:

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

Questa è una semplice query di aggregazione, in realtà. Quello che sta facendo la query è:

  • Guarda ogni riga in employees
  • Se jobname è 'Analyst' quindi assegna il valore di 1 (questo è il case istruzione. Otherwise, assign a value of 0`.
  • Aggregato per reparto, sommando il valore appena calcolato. Questo ha l'effetto di contare il numero di analisti.

case è un'espressione che restituisce un valore. Il sum() è semplicemente sommare quel valore per ogni gruppo.