sql >> Base de Datos >  >> RDS >> Mysql

MySQL:SUMA de una columna basada en un valor de otra columna

Debe usar la agregación condicional para sumar las diferentes leave_hours por separado:

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

Salida:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demostración en dbfiddle

Tenga en cuenta que si usa números de coma flotante para almacenar las horas, es posible que deba ROUND los resultados.