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

MySQL에서 생년월일이 1980년~1996년 사이인 사용자 비율 구하는 방법

MySQL에서 특정 기간(예: 1980년 1월 1일 ~ 1996년 12월 31일) 사이에 태어난 사용자의 비율을 계산하는 방법을 단계별로 알아보겠습니다. 핵심은 SUM() 함수와 COUNT(*)를 함께 활용하는 것입니다.

1. 테이블 생성하기

먼저 생년월일을 저장할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> DateOfBirth varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 여러 생년월일 데이터를 입력합니다.

mysql> insert into DemoTable values('2019/01/31');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('1980/02/01');
Query OK, 1 row affected (0.25 sec)

mysql> insert into DemoTable values('1985/04/10');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('1995/06/04');
Query OK, 1 row affected (0.28 sec)

mysql> insert into DemoTable values('1990/12/24');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values('1996/11/04');
Query OK, 1 row affected (0.19 sec)

3. 전체 데이터 확인하기

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

mysql> select *from DemoTable;

출력 결과

+-------------+
| DateOfBirth |
+-------------+
| 2019/01/31 |
| 1980/02/01 |
| 1985/04/10 |
| 1995/06/04 |
| 1990/12/24 |
| 1996/11/04 |
+-------------+
6 rows in set (0.00 sec)

4. 특정 기간 출생자의 비율 계산하기

다음 쿼리는 1980년부터 1996년 사이에 태어난 사용자가 전체 중 몇 퍼센트인지 계산합니다.

mysql> SELECT Sum(DateOfBirth BETWEEN '1980/01/01' AND '1996/12/31') * 100 / Count(*) as Percentage from DemoTable;

출력 결과

+------------+
| Percentage |
+------------+
| 83.3333 |
+------------+
1 row in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 작동하는 이유는 MySQL에서 BETWEEN 조건식은 조건을 만족하면 1, 만족하지 않으면 0을 반환하기 때문입니다.

  • SUM(DateOfBirth BETWEEN ...): 조건에 해당하는 행의 개수를 합산합니다. 위 예제에서는 6개 중 5개(1980/02/01, 1985/04/10, 1995/06/04, 1990/12/24, 1996/11/04)가 해당되므로 5가 됩니다.
  • * 100 / Count(*): 해당 개수를 전체 행 수로 나누고 100을 곱해 백분율로 변환합니다. 즉, 5 / 6 * 100 = 83.3333%입니다.

결과적으로 1980년~1996년 사이에 태어난 사용자는 전체의 약 83.33%임을 확인할 수 있습니다.

참고: 실무에서는 날짜를 VARCHAR가 아닌 DATE 타입으로 저장하고, ISO 표준 형식(YYYY-MM-DD)을 사용하는 것이 정렬·비교 연산에 훨씬 유리합니다.