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

MySQL에서 레코드를 알파벳순으로 정렬하고 개수를 집계하는 방법

테이블의 레코드를 알파벳순으로 정렬하면서 동시에 각 값의 중복 개수(빈도)까지 계산하려면 GROUP BY 절과 ORDER BY 절을 함께 사용하면 됩니다.

GROUP BY는 동일한 값을 가진 레코드들을 하나의 그룹으로 묶어 집계할 수 있게 해주고, ORDER BY는 그 결과를 지정한 기준(여기서는 알파벳순)에 따라 정렬해 줍니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
   (
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentGrade char(1)
   );
Query OK, 0 rows affected (0.87 sec)

2. 레코드 삽입하기

insert 명령을 사용하여 학생 성적 데이터를 여러 개 삽입해 보겠습니다.

mysql> insert into DemoTable(StudentGrade) values('A');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentGrade) values('C');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable(StudentGrade) values('A');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(StudentGrade) values('B');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(StudentGrade) values('C');
Query OK, 1 row affected (0.13 sec)

3. 전체 레코드 조회하기

select 문을 사용하여 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+-----------+--------------+
| StudentId | StudentGrade |
+-----------+--------------+
| 1         | A |
| 2         | F |
| 3         | C |
| 4         | A |
| 5         | F |
| 6         | F |
| 7       | B |
| 8 | C |
+-----------+--------------+
8 rows in set (0.00 sec)

4. 알파벳순 정렬 및 빈도 집계 쿼리

다음은 StudentGrade를 알파벳순으로 정렬하면서 각 등급별 학생 수를 집계하는 쿼리입니다. COUNT 함수로 StudentId의 개수를 세고, 별칭(alias)을 사용해 결과 열의 이름을 Frequency로 지정했습니다.

mysql> select StudentGrade,count(StudentId) as Frequency from DemoTable 
   group by StudentGrade order by StudentGrade;

출력 결과

+--------------+-----------+
| StudentGrade | Frequency |
+--------------+-----------+
| A | 2 |
| B | 1 |
| C | 2 |
| F | 3 |
+--------------+-----------+
4 rows in set (0.00 sec)

실행 결과를 보면 A와 C는 각각 2건, B는 1건, F는 3건으로 집계되었으며, 결과가 알파벳순(A → B → C → F)으로 깔끔하게 정렬된 것을 확인할 수 있습니다. 이처럼 GROUP BY와 ORDER BY를 조합하면 중복 값을 손쉽게 그룹화하여 통계를 내고 원하는 순서로 정렬할 수 있습니다.