sql >> Base de Datos >  >> RDS >> Oracle

Cómo funciona sum with case conditional en sql

Presumiblemente, esta es la parte que te cuesta entender:

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

Esta es una consulta de agregación simple, en realidad. Lo que está haciendo la consulta es:

  • Observe cada fila en employees
  • Si jobname es 'Analyst' luego asigne el valor de 1 (este es el case sentencia. Otherwise, assign a value of 0`.
  • Agregar por departamento, sumando el valor recién calculado. Esto tiene el efecto de contar el número de analistas.

case es una expresión que devuelve un valor. El sum() es simplemente sumar ese valor para cada grupo.