sql >> Databasteknik >  >> RDS >> Mysql

MySQL:SUMMA av en kolumn baserat på ett värde i en annan kolumn

Du måste använda villkorlig aggregering för att summera de olika leave_hours 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

Utdata:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Demo på dbfiddle

Observera att om du använder flyttal för att lagra timmarna kan du behöva ROUND resultaten.



  1. Django. Proxymodell med begränsad uppsättning fält

  2. Fråga returnerar ingenting från databasen

  3. Codeigniter ActiveRecord:gå med i backticking

  4. Felrapport - ORA-25155:kolumn som används i NATURAL join kan inte ha kvalificerare 25155. 00000 - kolumn som används i NATURAL join kan inte ha kvalificerare