Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :SOMME d'une colonne basée sur une valeur d'une autre colonne

Vous devez utiliser l'agrégation conditionnelle pour additionner les différentes leave_hours séparément :

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

Sortie :

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Démo sur dbfiddle

Notez que si vous utilisez des nombres à virgule flottante pour stocker les heures, vous devrez peut-être ROUND les résultats.