Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 날짜별 개수 계산하기 – 반복되는 날짜까지 한 번에 조회하는 쿼리

날짜별 개수를 표시하려면 집계 함수인 COUNT(*)를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1321
-> (
-> ArrivalDatetime timestamp
-> );
Query OK, 0 rows affected (0.50 sec)

예제 1: 데이터 삽입

insert 명령을 사용하여 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable1321 values(now());
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1321 values('2019-01-10 12:34:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1321 values('2019-06-12 11:34:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1321 values('2019-06-12 04:50:00');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1321 values('2019-09-18 10:50:45');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1321 values('2019-06-12 06:10:20');
Query OK, 1 row affected (0.11 sec)

select 문을 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select * from DemoTable1321;

출력 결과

+---------------------+
| ArrivalDatetime     |
+---------------------+
| 2019-09-18 21:49:17 |
| 2019-01-10 12:34:00 |
| 2019-06-12 11:34:00 |
| 2019-06-12 04:50:00 |
| 2019-09-18 10:50:45 |
| 2019-06-12 06:10:20 |
+---------------------+
6 rows in set (0.00 sec)

예제 2: 날짜별 개수 집계 쿼리

다음은 날짜별로 개수를 계산하는 쿼리입니다. DATE() 함수로 날짜 부분만 추출한 뒤 GROUP BY로 그룹화하고, ORDER BY로 날짜순 정렬합니다.

mysql> select date(ArrivalDatetime) as OnlyDate,count(*) as Total from DemoTable1321
-> group by date(ArrivalDatetime)
-> order by date(ArrivalDatetime);

출력 결과

+------------+-------+
| OnlyDate   | Total |
+------------+-------+
| 2019-01-10 | 1    |
| 2019-06-12 | 3    |
| 2019-09-18 | 2    |
+------------+-------+
3 rows in set (0.00 sec)

결과를 보면 2019-06-12 날짜가 3번 반복되어 Total이 3으로 집계된 것을 확인할 수 있습니다. 이처럼 DATE() 함수와 GROUP BY 절을 함께 사용하면 시간 정보는 제외하고 날짜 단위로 데이터를 그룹화할 수 있으며, 반복되는 날짜의 개수까지 손쉽게 조회할 수 있습니다.