我有一个具有访问控制日志条目的数据库:

time : datetime (this is the access timestamp)
src: text (this is the userid)


我想从中获得一个列表,该列表显示在过去7天中有多少天来自当前日期。结果应如下所示:

number of days with access |  count
1                          |   30
2                          |   54
3                          |   123
4                          |   843
5                          |   3490
6                          |   71
7                          |   23


到目前为止,我有:

下面的查询返回在2015-03-08上有日志条目的用户数,在2015-03-07上也有条目。

SELECT Count(DISTINCT a.src)
FROM   contacts AS a
       LEFT JOIN contacts AS b
              ON a.src = b.src
WHERE  a.time BETWEEN Cast('2015-03-08 05:00:00' AS DATETIME) AND Cast('2015-03-09 05:00:00' AS DATETIME)
       AND b.time BETWEEN Cast('2015-03-07 05:00:00' AS DATETIME) AND Cast('2015-03-08 05:00:00' AS DATETIME)


但是如上所述,我一直坚持按天数来获取每天的计数。如果没有“仅SQL”解决方案,那么使用php(性能)方法也是可以的。谢谢你的帮助..

最佳答案

我看不出您为什么需要加入b表的任何原因。

SELECT
  DAY(a.time),
  COUNT(DISTINCT a.src)
FROM   contacts AS a
WHERE  a.time
   BETWEEN (TIMESTAMP(CURDATE()) - INTERVAL 1 WEEK)
     AND TIMESTAMP(CONCAT(CURDATE(),' 23:59:59'))
GROUP BY DAY(a.time)

关于php - SQL查询以计数重新出现的条目的天数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28947563/

10-16 15:14