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

MySQL 테이블에서 특정 날짜의 개수를 조회하는 방법

MySQL에서 특정 날짜의 레코드 수 세기

MySQL 테이블에 저장된 데이터 중 특정 날짜가 몇 번 등장하는지 확인하고 싶다면 COUNT(*) 함수와 WHERE 절을 함께 사용하면 됩니다. 이번 글에서는 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 날짜를 저장할 테이블을 생성합니다.

mysql> create table DemoTable1946
    (
    ShippingDate date
    );
Query OK, 0 rows affected (0.00 sec)

2단계: 샘플 데이터 삽입

INSERT 명령어를 사용해 여러 날짜의 레코드를 입력합니다.

mysql> insert into DemoTable1946 values('2019-12-11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1946 values('2018-12-11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1946 values('2017-12-11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1946 values('2019-04-22');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1946 values('2019-12-11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1946 values('2015-12-11');
Query OK, 1 row affected (0.00 sec)

3단계: 전체 데이터 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select * from DemoTable1946;

실행 결과는 다음과 같습니다.

+--------------+
| ShippingDate |
+--------------+
| 2019-12-11   |
| 2018-12-11   |
| 2017-12-11   |
| 2019-04-22   |
| 2019-12-11   |
| 2015-12-11   |
+--------------+
6 rows in set (0.00 sec)

총 6개의 레코드가 저장되어 있으며, 그중 '2019-12-11' 날짜는 두 번 등장하는 것을 확인할 수 있습니다.

4단계: 특정 날짜 개수 조회 쿼리 실행

이제 COUNT(*)DATE() 함수를 활용해 특정 날짜('2019-12-11')의 레코드 수를 세는 쿼리를 실행합니다.

mysql> select count(*) from DemoTable1946 where date(ShippingDate)='2019-12-11';

실행 결과는 다음과 같습니다.

+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec)

결과 해석 및 참고 사항

위 결과를 보면 '2019-12-11' 날짜의 배송 기록이 총 2건 있는 것을 알 수 있습니다.

여기서 사용한 DATE(ShippingDate) 함수는 컬럼 값이 DATETIME 타입일 경우 시간 부분을 제거하고 날짜만 비교하기 위해 사용됩니다. 만약 컬럼이 DATE 타입이라면 다음과 같이 더 간단하게 작성할 수도 있습니다.

mysql> select count(*) from DemoTable1946 where ShippingDate = '2019-12-11';

또한, 인덱스가 설정된 컬럼에 함수를 적용하면 인덱스를 활용하지 못할 수 있으므로, 대용량 테이블에서는 범위 조건(>=, <)을 사용하는 방식도 성능 면에서 고려해 볼 만합니다.