Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:SOMMA di una colonna basata su un valore di un'altra colonna

Devi usare l'aggregazione condizionale per sommare le diverse leave_hours separatamente:

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

Uscita:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demo su dbfiddle

Tieni presente che se utilizzi numeri in virgola mobile per memorizzare le ore, potrebbe essere necessario ROUND i risultati.