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

MySQL에서 특정 숫자보다 크거나 작은 값의 개수를 별도의 열로 조회하는 방법

MySQL에서 특정 숫자를 기준으로 그보다 큰 값과 작은(또는 같은) 값의 개수를 각각 세어 별도의 열로 표시하려면 COUNT() 함수와 CASE 문을 함께 사용하면 됩니다.

1. 샘플 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Score int
);
Query OK, 0 rows affected (0.71 sec)

2. 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(40);
Query OK, 1 row affected (0.77 sec)
mysql> insert into DemoTable values(48);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(59);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(33);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(38);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(89);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(35);
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------+
| Score |
+-------+
|    40 |
|    48 |
|    59 |
|    33 |
|    38 |
|    89 |
|    35 |
+-------+
7 rows in set (0.00 sec)

4. 조건별 개수 집계 쿼리

아래는 특정 숫자(여기서는 45)보다 큰 값과 45 이하인 값의 개수를 각각 별도의 열로 집계하는 쿼리입니다.

mysql> select count( case when Score > 45 then 1 end) as CountOfValueGreaterThan45,
    count( case when Score <= 45 then 1 end) as CountOfValueLessThanOrEqualTo45
    from DemoTable;

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

+---------------------------+---------------------------------+
| CountOfValueGreaterThan45 | CountOfValueLessThanOrEqualTo45 |
+---------------------------+---------------------------------+
|                         3 |                               4 |
+---------------------------+---------------------------------+
1 row in set (0.00 sec)

동작 원리 정리

CASE 문은 조건을 만족할 때만 1을 반환하고, 만족하지 않으면 NULL을 반환합니다. COUNT() 함수는 NULL을 제외한 값만 세기 때문에, 조건별로 개수가 자연스럽게 분리되어 집계됩니다. 이 방식을 활용하면 하나의 쿼리로 여러 조건의 통계를 동시에 얻을 수 있어 성능 면에서도 유용합니다.