MYSQL查询计数多个日期

时间:2015-09-15 00:34:37

标签: mysql

我有一个我们开发的工具,当他们走进房间时,通过RFID扫描人们。

所以我有像这样的任务设置的人的扫描数据表

ID | User | Created_At 
Int| Int  | Datetime
10 | 223  | 2015-09-07 00:00:00 
etc...

我想查询每个用户扫描一张传递的唯一日期数。

在一个完美的世界中,报告中只有3列

人员ID,他们扫描的不同天数以及他们扫描的总次数。

总扫描很简单,但我在不同的日程计数中难以接受。

1 个答案:

答案 0 :(得分:0)

首先,您需要一个结果集,显示每个用户在数据库中出现的日期。

           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.User