MySQL GROUP BY 按周、月查询分组结果

标签 mysql sql

我有一个名为“counter”的表,它有 3 个字段:

| Field  | Type       | Null | Key | Default | Extra          |
+--------+------------+------+-----+---------+----------------+
| id     | int(11)    | NO   | PRI | NULL    | auto_increment |
| record | datetime   | YES  |     | NULL    |                |
| passed | tinyint(1) | YES  |     | NULL    |                |
+--------+------------+------+-----+---------+----------------+

我的表记录

mysql> SELECT record, passed FROM counter;
+---------------------+--------+
| record              | passed |
+---------------------+--------+
| 2019-09-19 00:00:00 |      1 |

我想进行查询,以根据现场记录按周和月对结果进行分组。

我尝试过这样做,但看起来不对

 SELECT DATE_FORMAT(record, '%d-%m-%Y') AS ts, COUNT(*) FROM counter WHERE record >= '2019-10-09' AND   record <  '2019-10-09' + INTERVAL 7 DAY GROUP BY DATE_FORMAT(record, '%d-%m-%Y');

最佳答案

带有日期提取的简单分组必须有效

select 
    EXTRACT(YEAR FROM record) V_YEAR,
    EXTRACT(MONTH FROM record) V_MONTH,
    EXTRACT(WEEK FROM record) V_WEEK,
    COUNT(*)
FROM COUNTER
GROUP BY
    EXTRACT(YEAR FROM record) ,
    EXTRACT(MONTH FROM record) ,
    EXTRACT(WEEK FROM record) 

使用 DATE_FORMAT(date, format) 编辑相同的作品

select 
    DATE_FORMAT(record, '%Y') V_YEAR,
    DATE_FORMAT(record, '%M') V_MONTH,
    DATE_FORMAT(record, '%d') V_WEEK,
    COUNT(*)
FROM COUNTER
GROUP BY
    DATE_FORMAT(record, '%Y') ,
    DATE_FORMAT(record, '%M') ,
    DATE_FORMAT(record, '%d') 

关于MySQL GROUP BY 按周、月查询分组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58336376/

相关文章:

mysql - SQL 中不同的多列

php - Zend SQL 语句以按出现次数查找和排序结果

mysql - 对表中的增量求和的sql查询

php - 使用 rewritemap 和 mysql 重写 url 参数

mysql - 查找结果集中某个字段是否有重复值

php - SqlClient.SqlException : Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fn_rt_getlevel", 或名称不明确

sql - SQL数据库自动备份

java - 从数据库中获取大值

php - 具有未加载附加列的 Kohana 数据透视表

如果连接不存在到第二个表,则Mysql使用一个表中的列值