mysql - MYSQL如何根据日期和响应的多个条件求和
问题描述
我正在尝试根据 3 列汇总提供的小时数以及接受或拒绝的小时数。1 列是日期 2 列是小时 3 是标准。我需要将他们接受或拒绝 OT 的日期范围之间的小时数相加。我需要能够在指定的日期范围内计算响应是和否。@ 第 4 个总和行它不能正常工作,并且每隔一个总和行显示错误的计数似乎工作。看来我有两个以上的条件是失败的。
SELECT
employee.employee_ID,
employee.LastName,
employee.FirstName,
employee.Department,
employee.HomePhone,
employee.CellPhone,
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Yes' THEN ot_tracking.hours else 0 END) AS OT_Accepted,
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'No' THEN ot_tracking.hours else 0 END) AS OT_Declind,
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Not Available - working or off' THEN ot_tracking.hours else 0 END) AS 'OT Unable to work',
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '202-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No' THEN ot_tracking.hours else 0 END) AS 'OT Offered',
employee.Senority
FROM site
INNER JOIN employee
ON site.siteID = employee.siteID
LEFT OUTER JOIN ot_tracking
ON ot_tracking.employee_ID = employee.employee_ID
WHERE employee.siteID = 1
AND employee.Department <> 'shop' AND Department = 'Log Yard' AND LogLoader = 'Yes' AND Active = 'Yes'
GROUP BY ot_tracking.operator,
employee.Senority,
employee.Department
ORDER BY employee.Department, `OT Offered`, employee.Senority
解决方案
用括号括起来ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No'
,因为运算符AND
的优先级高于OR
:
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND (ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No') THEN ot_tracking.hours else 0 END) AS `OT Offered`
或使用 IN:
SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse IN ('Yes', 'No') THEN ot_tracking.hours else 0 END) AS `OT Offered`
'
推荐阅读
- laravel-5 - 用于 API 登录和获取访问令牌的 URL
- python - 使用其他列的名称作为位置将列插入到其他列之间的 python pandas 数据框中?
- jquery - 上传裁剪的图像 jquery asp.net mvc
- node.js - 我如何将用户数据从后端传递到前端?
- postgresql - 从以前使用 Postgres 进行的备份中提取插入语句
- sql - 当名称相等时,从 ACCESS 查询中排除相同的返回
- dataframe - 比较前两个时无法将正确的状态放入另一列
- sql - 如何将数据从源表(但不同的列)插入到 SQL Server 中的两个不同的表中
- google-analytics - 如何跟踪 Google Data Studio 仪表板的用户
- css - 仅边框图像底部