Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:SOMA de uma coluna com base no valor de outra coluna


Você precisa usar a agregação condicional para somar as diferentes leave_hours separadamente:
SELECT employee_id, 
       SUM(overtime_hours) AS ot, 
       SUM(CASE WHEN leave_type = 1 THEN leave_hours ELSE 0 END) AS leave_1, 
       SUM(CASE WHEN leave_type = 2 THEN leave_hours ELSE 0 END) AS leave_2
FROM `table`
GROUP BY employee_id

Resultado:
employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demonstração no dbfiddle

Observe que se você usar números de ponto flutuante para armazenar as horas, pode ser necessário ROUND os resultados.