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

MySQL에서 GROUP BY로 고유한 값과 그 개수를 반환하는 방법

MySQL에서 중복을 제거한 고유한(distinct) 값과 각 값이 나타난 개수(count)를 함께 조회하려면 GROUP BY 절과 COUNT() 함수를 함께 사용하면 됩니다.

1. 테이블 생성하기

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

mysql> create table DemoTable754 (ProductPrice int);
Query OK, 0 rows affected (0.48 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable754 values(200);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable754 values(500);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable754 values(200);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable754 values(500);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable754 values(800);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable754 values(900);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable754 values(200);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable754 values(200);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable754 values(900);
Query OK, 1 row affected (0.11 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable754;

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

+--------------+
| ProductPrice |
+--------------+
|          200 |
|          500 |
|          200 |
|          500 |
|          800 |
|          900 |
|          200 |
|          200 |
|          900 |
+--------------+
9 rows in set (0.00 sec)

4. 고유한 값과 개수 조회하기

고유한 값과 그 개수를 반환하는 쿼리는 다음과 같습니다. ProductPrice 열을 기준으로 그룹화한 뒤, COUNT() 함수로 각 그룹의 레코드 수를 집계합니다.

mysql> select ProductPrice,count(ProductPrice) from DemoTable754 group by ProductPrice;

실행 결과는 아래와 같습니다.

+--------------+---------------------+
| ProductPrice | count(ProductPrice) |
+--------------+---------------------+
|          200 |                   4 |
|          500 |                   2 |
|          800 |                   1 |
|          900 |                   2 |
+--------------+---------------------+
4 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 전체 9개의 레코드가 4개의 고유한 가격 값으로 그룹화되었음을 알 수 있습니다.

  • 200: 4번 등록됨
  • 500: 2번 등록됨
  • 800: 1번 등록됨
  • 900: 2번 등록됨

참고로 결과의 가독성을 높이기 위해 별칭(alias)을 사용할 수도 있습니다.

mysql> select ProductPrice, count(ProductPrice) AS TotalCount
    -> from DemoTable754
    -> group by ProductPrice;

이처럼 GROUP BYCOUNT()를 조합하면 MySQL에서 손쉽게 고유한 값별 빈도수를 집계할 수 있습니다.