Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:SUM einer Spalte basierend auf einem Wert einer anderen Spalte

Sie müssen die bedingte Aggregation verwenden, um die verschiedenen leave_hours zu summieren separat:

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

Ausgabe:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demo auf dbfiddle

Beachten Sie, dass Sie, wenn Sie Gleitkommazahlen verwenden, um die Stunden zu speichern, möglicherweise ROUND müssen die Ergebnisse.