我有一个我们开发的工具,当人们走进房间时,它可以通过RFID扫描他们。
因此,我有一个任务设置的人员扫描数据表,如下
ID | User | Created_At
Int| Int | Datetime
10 | 223 | 2015-09-07 00:00:00
etc...我想要一个查询来查看每个用户拥有的扫描通行证的唯一日期的数量。
在理想的情况下,报告中应该只有3栏
人员ID和他们已扫描的不同天数,以及他们扫描的总次数。
总扫描很简单,但我被不同的天数难住了。
发布于 2015-09-15 09:28:11
首先,您需要一个结果集来显示每个用户在数据库中出现的日期。
SELECT DISTINCT DATE(Created_At) Scandate, User
FROM Scan然后你把它聚合起来。
SELECT COUNT(*) Datecount, User
FROM (
SELECT DISTINCT DATE(Created_At) Scandate, User
FROM Scan
) A
GROUP BY User这将为您提供每个用户出现的日期。
然后你需要计算出基本的计数。
SELECT COUNT(*) Scancount, User
FROM Scan
GROUP BY User最后,您需要在User上将这两个连接在一起,并对它们进行排序,以便它们有意义。
SELECT Q.User, R.Scancount, S.Datecount
FROM (
SELECT COUNT(*) Datecount, User
FROM (
SELECT DISTINCT DATE(Created_At) Scandate, User
FROM Scan
) A
GROUP BY User
) R
JOIN (
SELECT COUNT(*) Scancount, User
FROM Scan
GROUP BY User
) S ON R.User = S.User
ORDER BY Q.Userhttps://stackoverflow.com/questions/32575890
复制相似问题