Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como a soma com a instrução condicional case funciona no sql


Presumivelmente, esta é a parte que você está lutando para entender:
  select deptno,
         sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
  from employees
  group by deptno

Esta é uma consulta de agregação simples, na verdade. O que a consulta está fazendo é:
  • Veja cada linha em employees
  • Se jobname é 'Analyst' em seguida, atribua o valor de 1 (este é o case declaração. Otherwise, assign a value of 0`.
  • Agregar por departamento, somando o valor calculado. Isso tem o efeito de contar o número de analistas.

case é uma expressão que retorna um valor. A sum() é simplesmente somar esse valor para cada grupo.