簡體   English   中英

MySQL GROUP BY 按周、月查詢分組結果

[英]MySQL GROUP BY query group results by week, month

我有一個名為“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') 

每周通過、失敗等次數:

SELECT week(record_date) as weekofyear, sum(passed) as numpasses, count(*) - sum(passed) as numfails, count(*) as total
FROM counter
WHERE record_date >= '2019-01-01' and record_date < '2020-01-01'
GROUP BY week(record_date)

換周換月等

MySQL 支持 ROLLUP,可以在同一語句中匯總周和月:

SELECT month(record_date) as monthofyear, week(record_date) as weekofyear, sum(passed) as numpasses, count(*) - sum(passed) as numfails, count(*) as total
FROM counter
WHERE record_date >= '2019-01-01' and record_date < '2020-01-01'
GROUP BY month(record_date), week(record_date) WITH ROLLUP

周為 null 的行是該月的總數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM