【问题标题】:Retrive last 1 week records on per day basis每天检索最近 1 周的记录
【发布时间】:2013-05-30 12:24:48
【问题描述】:

我创建了一个表emp_info,其中包含电子邮件、手机、时间戳作为字段。

我想每天检索最近 1 周的记录。为此我已经尝试过

SELECT count(*) 
FROM `emp_info` 
WHERE DATE(timestamp ) > DATE_SUB( CURDATE( ) , INTERVAL 1 WEEK ) 
ORDER BY saved_timestamp

它显示总数。在过去 7 天内输入的记录数,这不是我想要的输出。

所以我想要输出 7 天的记录,例如:

  Day          count
  Monday       2
  Tuesday      0
  ....         ..
  ....         ..

那么有人请帮帮我吗?

【问题讨论】:

    标签: mysql date


    【解决方案1】:

    只需将DAYNAME 添加到您的列列表并聚合即可。

    SELECT DAYNAME(timestamp), COUNT(*)
    FROM `emp_info` 
    WHERE DATE(timestamp ) > DATE_SUB( CURDATE( ) , INTERVAL 1 WEEK ) 
    GROUP BY DAYNAME(timestamp)
    ORDER BY saved_timestamp
    

    【讨论】:

    • 谢谢!!但我也想显示没有填充记录的 DAYNAME ,即 count(*) 为 0 。那么该怎么做呢?
    • 你需要创建一个临时表和JOIN
    • 我正在尝试通过加入查询来修复它,但没有得到结果,所以请指导我。
    • @Sam 请创建一个新问题
    • 我已经问过另一个question 关于这个。请通过它。
    【解决方案2】:

    尝试从日期中提取星期几,然后使用计数并将其按星期几分组,您可以获得每天的计数。

    SELECT DAYOFWEEK(DATE(timestamp)), count(*) FROM `emp_info` WHERE DATE(timestamp ) > DATE_SUB( CURDATE( ) , INTERVAL 1 WEEK ) group by DAYOFWEEK(DATE(timestamp))
    

    【讨论】:

    • DATE() 是不必要的。 DAYOFWEEK 函数将只显示当天的数字表示。
    • 谢谢!我不确定 DAYOFWEEK 是否也适用于时间戳。
    最近更新 更多