我想知道是否有人能帮我这个忙。下面是我的一组数据示例:
FirstName LastName Department Ticket Hours Shift DateWorked Key
Bob Smith Sleeves 23235 4 1 2017-01-01 001
Bob Smith Sleeves 12345 4 1 2017-01-01 001
Jim Bo Sleeves 12345 8 1 2017-01-01 002
Janet Moore Lids 78945 8 2 2017-01-01 003
Jon Bob Lids 45621 1.5 3 2017-01-01 004
Jon Bob Lids 45621 7.5 3 2017-01-01 004
Bob Smith Mugs 12345 8 1 2017-01-02
Jim Bo Lids 99999 8 3 2017-01-02它应该返回这样的东西:
DateWorked Shift Department HeadCount
2017-01-01 1 Sleeves 2 (Bob Smith has two entries but counted as one and Jim Bo makes for 2)
2017-01-01 2 Lids 1 (Janet)
2017-01-01 3 Lids 1 (Jon)请注意,所有部门都在轮班工作。这只是一个样本集。每个部门有从零到一百不等的任何地方。
同时,一个员工可以在一天内完成多个部门的工作!我不知道该怎么解释。
这就是我所拥有的。因此,对于这个例子,它不是总结Bob。把他算作两个人。
SELECT Scheduled, Department, [Shift], COUNT(*) as HeadCount
FROM EmployeeTickets
WHERE Scheduled >= '2017-01-01' AND Scheduled < '2017-12-31'
GROUP BY Scheduled, Department, [Shift]
ORDER BY Scheduled, Department, [Shift]谢谢。
ETA我不知道它是否有用,但是在表中每个条目都有一个键,所以在1月1日会有一个那天的键。他的社保号码也在里面。我正试着按其中之一分组。
发布于 2018-01-10 21:12:39
只需使用DISTINCT
SELECT Scheduled, Department, [Shift], COUNT( DISTINCT FirstName ) as HeadCount
FROM EmployeeTickets
WHERE Scheduled >= '2017-01-01' AND Scheduled < '2017-12-31'
GROUP BY Scheduled, Department, [Shift]
ORDER BY Scheduled, Department, [Shift]当然,如果你有多个同名的人,这就有问题了。所以我希望你的桌子上有一些EmployeeID,这样你就能区分每个员工。
COUNT(DISTINCT EmployeeID)https://stackoverflow.com/questions/48196130
复制相似问题