简体   繁体   English

MySQL Group数据按上周的日期命名

[英]MySQL Group data by name of day in last week

I am trying to write a query to group the last 7 days worth of stats data by weekday and return the following: 我正在尝试编写查询以按工作日分组最近7天的统计数据,并返回以下内容:

    dayname | count(*)
-----------------------
Monday      |   3              
Tuesday     |   2        

The above is my desired output however I can't seem to get the dayname. 上面是我想要的输出,但是我似乎无法获得dayname。

    Day(enquiries.created_at) | Count(enquiries.id)
-----------------------------------------------------
    1                         | 1
    3                         | 1
    4                         | 14
    31                        | 5

The above is my current output and an explanation is that 31st August, 1st September etc... however I want to group by weekday name as opposed to date. 以上是我当前的输出 ,解释是8月31日,9月1日等。但是我想按工作日名称(而不是日期)进行分组。

Here is the query that I have so far: 这是我到目前为止的查询:

SELECT Day(enquiries.created_at), 
       Count(enquiries.id) 
FROM   enquiry_stats 
       LEFT JOIN enquiries 
              ON enquiry_stats.enquiry_id = enquiries.id 
WHERE  created_at >= Date_add(Curdate(), INTERVAL -7 day) 
GROUP  BY Day(enquiries.created_at);

I am just wondering how to group the data not by day but by dayname? 我只是想知道如何按天而不是按天名对数据进行分组?

"I am just wondering how to group the data not by day but by dayname ?" “我只是想知道如何按而不是按日名对数据进行分组 ?”

As easy as it will sound, use DAYNAME() instead: 听起来很简单,请改用DAYNAME()

SELECT DayName(enquiries.created_at), 
       Count(enquiries.id) 
FROM   enquiry_stats 
       LEFT JOIN enquiries 
              ON enquiry_stats.enquiry_id = enquiries.id 
WHERE  created_at >= Date_add(Curdate(), INTERVAL -7 day) 
GROUP  BY DayName(enquiries.created_at);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM