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

MySQL에서 GROUP BY 절로 결과 집합을 그룹으로 나누는 방법

MySQL에서 SELECT 문에 GROUP BY 절을 사용하면 결과 집합을 그룹으로 나눌 수 있습니다. GROUP BY 절 뒤에 특정 열을 지정하면 해당 열이 그룹화 기준이 되며, 같은 값을 가진 행들이 하나의 그룹으로 묶입니다. 이를 통해 MySQL SELECT 문이 반환하는 결과 집합을 여러 개의 그룹으로 분할할 수 있습니다.

예제

다음 예제를 통해 GROUP BY의 동작 방식을 쉽게 이해할 수 있습니다.

먼저 아래와 같은 'employees' 테이블이 있다고 가정해 보겠습니다.

mysql> Select * from employees;
+------+-------------+--------+------------+
| id   | designation | Salary | DoJ        |
+------+-------------+--------+------------+
| 100  | Asst.Prof   | 50000  | 2016-06-15 |
| 300  | Prof        | 85000  | 2010-05-18 |
| 250  | Asso.Prof   | 74000  | 2013-02-12 |
| 400  | Prof        | 90000  | 2009-05-19 |
| 200  | Asst.Prof   | 60000  | 2015-05-11 |
+------+-------------+--------+------------+
5 rows in set (0.00 sec)

이제 다음 쿼리를 사용하여 직급(designation)별로 결과를 그룹화해 보겠습니다.

mysql> select designation, count(*), AVG(salary) from employees group by designation;
+-------------+----------+-------------+
| designation | count(*) | AVG(salary) |
+-------------+----------+-------------+
| Asso.Prof   | 1        | 74000.0000  |
| Asst.Prof   | 2        | 55000.0000  |
| Prof        | 2        | 87500.0000  |
+-------------+----------+-------------+
3 rows in set (0.00 sec)

위 쿼리는 직급을 기준으로 결과 집합을 세 개의 그룹으로 나누어 반환합니다. 각 그룹의 의미는 다음과 같습니다.

  • Asso.Prof(부교수): 총 1명, 평균 급여 74,000
  • Asst.Prof(조교수): 총 2명, 평균 급여 55,000
  • Prof(교수): 총 2명, 평균 급여 87,500

이처럼 GROUP BY 절은 COUNT, AVG, SUM 같은 집계 함수와 함께 사용하면 데이터를 카테고리별로 요약하고 분석하는 데 매우 유용합니다.