현재 작업하고 있는 외주 프로젝트가 직원 출근/업무 관리 시스템인데 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