【发布时间】:2021-03-06 05:06:51
【问题描述】:
我有一个表格,其中包含以下列:日期、员工姓名、班次编号(1,2 或 3)。我想汇总数据以根据所选日期(即到此指定日期)接收特定员工的轮班次数。我需要查看以下列:日期、员工姓名、班次编号(1,2 或 3)、班次总数到第一列中指定的日期。
将 INNER JOIN 与两个 SELECT 语句一起使用,我可以获得所有日期的班次总数,例如(班次 1):
SELECT *
FROM employees a
INNER JOIN (SELECT employee, COUNT(value) AS shifts FROM employees WHERE value='1' GROUP BY employee) b ON b.employee=a.employee
WHERE date>='2020-11-05'
如何更改我的查询以仅显示每个员工在选定日期之前的班次总和?
感谢您的帮助!
编辑:按要求提供样本数据,我有什么:
date employee value
2020-11-05 X 1
2020-11-05 Y 2
2020-11-05 Z 3
2020-11-06 X 1
2020-11-06 Y 2
2020-11-06 Z 3
我需要什么:
date employee value shifts_1
2020-11-05 X 1 1
2020-11-05 Y 2 0
2020-11-05 Z 3 0
2020-11-06 X 1 2
2020-11-06 Y 2 0
2020-11-06 Z 3 0
总而言之,在这种情况下,最后一列应显示在指定日期之前分配给每个员工的第一次轮班次数。
【问题讨论】:
-
请提供样本数据、所需结果和适当的数据库标签。
标签: sql database group-by inner-join