sql >> Databáze >  >> RDS >> Mysql

MySQL:SUM sloupce na základě hodnoty jiného sloupce

Chcete-li sečíst různé leave_hours, musíte použít podmíněnou agregaci samostatně:

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

Výstup:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

Ukázka na dbfiddle

Všimněte si, že pokud k ukládání hodin používáte čísla s plovoucí desetinnou čárkou, možná budete muset ROUND výsledky.



  1. Mohu použít PostgreSQL (pg) na straně klienta (express/node.js)

  2. C# 2010, ODP.net, volání uložené procedury předávání pole

  3. T-SQL úterý #106:MÍSTO spouštěčů

  4. Geograficky rozptýlené servery, PostgreSQL a JPA