MySQL GROUP BY query group results by week, month

Yoseob Shin·2022년 7월 28일

mysql

목록 보기
7/7

현재 작업하고 있는 외주 프로젝트가 직원 출근/업무 관리 시스템인데 Day테이블을 짜는 도중 매주/매월/매년 별로 쿼리를 하게 될경우 테이블을 따로 각자 따로 짜야 하나 잘 모를때 stackoverflow에서 이러한 리소스를 찾았다.

현재 가지고 있는 day 테이블에 아래 예 쿼리들을 시험해봐서 원하는 데이터가 추출이 되는지 확인해 보고 느낀점을 추후에 적어야 겠다.

| 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 |

Answer:

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) 

edit same works with DATE_FORMAT(date, format) as well

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') 

https://stackoverflow.com/questions/58336376/mysql-group-by-query-group-results-by-week-month

profile
coder for web development + noodler at programming synthesizers for sound design as hobbyist.

0개의 댓글