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

MySQL에서 열(Column)별 중복 레코드 개수 집계 후 정렬하는 방법

MySQL에서 특정 열에 중복된 값이 몇 번씩 나타나는지 확인하려면 GROUP BY 절을 사용해야 합니다. 여기에 레코드 개수를 세는 COUNT(*) 함수와 결과를 정렬하는 ORDER BY 절을 함께 사용하면 됩니다.

기본 문법

select count(*) as 별칭이름 from 테이블명 group by 열이름 order By 별칭이름 DESC;

예제 테이블 생성

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

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

데이터 삽입

insert 명령을 사용해 테이블에 여러 개의 레코드를 삽입합니다. 의도적으로 중복 값을 포함시켰습니다.

mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(110);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(120);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(120);
Query OK, 1 row affected (0.13 sec)

전체 데이터 조회

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

mysql> select *from DemoTable;

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

+--------+
| Number |
+--------+
|     90 |
|    100 |
|    110 |
|     90 |
|    100 |
|     90 |
|    120 |
|    100 |
|     90 |
|    120 |
+--------+
10 rows in set (0.00 sec)

중복 레코드 개수 집계 및 정렬 쿼리

다음은 각 값이 중복된 횟수를 집계한 뒤, 개수가 많은 순서대로(내림차순) 정렬하는 쿼리입니다.

mysql> select count(*) as Occured from DemoTable group by Number order By Occured DESC;

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

+---------+
| Occured |
+---------+
|       4 |
|       3 |
|       2 |
|       1 |
+---------+
4 rows in set (0.00 sec)

결과 해석

위 출력 결과를 보면 다음과 같이 해석할 수 있습니다.

  • 90: 4번 중복됨
  • 100: 3번 중복됨
  • 120: 2번 중복됨
  • 110: 1번만 등장함

이처럼 GROUP BY로 열 값을 그룹화하고, COUNT(*)로 각 그룹의 레코드 수를 계산한 후, ORDER BY ... DESC를 적용하면 중복 횟수가 많은 순서대로 손쉽게 정렬된 결과를 얻을 수 있습니다. 이 기법은 데이터 정제 작업이나 중복 데이터 분석 시 매우 유용하게 활용됩니다.