[英]MySQL: SUM of a column based on a value of another column
我想有一个列的总和,如果另一列的值是this / that,则该列为基础。 这是我的表结构
id leave_hours leave_type overtime_hours employee_id
1 7.6 1 0 3
2 5 2 0 3
3 0 0 2.3 3
我已经有这个查询,但是我需要有一个列,该列仅在休假类型为1且休假类型为2时求和
SELECT employee_id, SUM(overtime_hours) AS ot_hrs, SUM(leave_hours if leave_type == 1) AS
leave_1, SUM(leave_hours if leave_type == 2) AS leave_2
FROM table
GROUP BY employee_id
结果应为:
employee_id ot_hrs leave_1 leave_2
3 2.3 7.6 5
感谢您的投入。
您需要使用条件汇总来分别汇总不同的leave_hours
:
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
输出:
employee_id ot leave_1 leave_2
3 2.3 7.6 5
请注意,如果使用浮点数存储小时,则可能需要对结果进行ROUND
。
您可以在以下情况下使用max()
SELECT employee_id,
max(overtime_hours) AS ot,
max(CASE WHEN leave_type = 1 THEN leave_hours END) AS leave_1,
max(CASE WHEN leave_type = 2 THEN leave_hours END) AS leave_2
FROM table_name
GROUP BY employee_id
产量
employee_id ot leave_1 leave_2
3 2.3 7.599999904632568 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.