sql >> Database >  >> RDS >> Mysql

MySQL:SOM van een kolom op basis van een waarde van een andere kolom

U moet voorwaardelijke aggregatie gebruiken om de verschillende leave_hours op te tellen afzonderlijk:

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

Uitgang:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demo op dbfiddle

Houd er rekening mee dat als u getallen met drijvende komma gebruikt om de uren op te slaan, u mogelijk moet ROUND de resultaten.



  1. SQLite selecteert rijen als tijdstempel overeenkomt met de datum van vandaag

  2. SSH-tunnel voor Python MySQLdb-verbinding

  3. MySQL kopieert efficiënt alle records van de ene tabel naar de andere

  4. Hoe het resultaat van Oracle SQL in een bestand in Windows uit te voeren?