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

MySQL ORDER BY 절에서 그룹 함수를 활용해 결과 정렬하는 방법

MySQL에서 ORDER BY 절에 그룹 함수(집계 함수)를 사용하면 GROUP BY로 묶인 결과 집합의 각 그룹을 원하는 기준으로 정렬할 수 있습니다. 기본 정렬 순서는 오름차순(ASC)이며, DESC 키워드를 사용하면 내림차순으로 정렬 순서를 반대로 바꿀 수 있습니다.

ORDER BY 절에서 그룹 함수 사용 예제

다음은 직원(employees) 테이블에서 직급(designation)과 입사 연도(YEAR(Doj))별로 그룹화한 뒤, COUNT(*) 값을 기준으로 내림차순 정렬하는 예제입니다.

mysql> Select designation, YEAR(Doj), count(*) from employees GROUP BY designation, YEAR(DoJ) ORDER BY Count(*) DESC;
+-------------+-----------+----------+
| designation | YEAR(Doj) | count(*) |
+-------------+-----------+----------+
| Prof        |      2009 |        2 |
| Asst.Prof   |      2015 |        1 |
| Asst.Prof   |      2016 |        1 |
| Prof        |      2010 |        1 |
| Asso.Prof   |      2013 |        1 |
+-------------+-----------+----------+
5 rows in set (0.00 sec)

위 결과에서 볼 수 있듯이, ORDER BY Count(*) DESC를 사용하면 해당 그룹에 속한 행의 개수가 많은 순서대로 데이터가 정렬됩니다.

일반 열 기준으로 정렬하기

그룹 함수뿐만 아니라 SELECT 절에 있는 일반 열을 기준으로도 정렬할 수 있습니다. 아래 예제는 직급(designation)을 기준으로 내림차순 정렬한 결과입니다.

mysql> Select designation, YEAR(Doj), count(*) from employees GROUP BY designation, YEAR(DoJ) ORDER BY designation DESC;
+-------------+-----------+----------+
| designation | YEAR(Doj) | count(*) |
+-------------+-----------+----------+
| Prof        |      2009 |        2 |
| Prof        |      2010 |        1 |
| Asst.Prof   |      2015 |        1 |
| Asst.Prof   |      2016 |        1 |
| Asso.Prof   |      2013 |        1 |
+-------------+-----------+----------+
5 rows in set (0.00 sec)

정리

  • ORDER BY 절에는 COUNT(), SUM(), AVG() 같은 그룹 함수를 그대로 사용할 수 있습니다.
  • 기본 정렬 방향은 오름차순(ASC)이며, DESC 키워드를 붙이면 내림차순으로 정렬됩니다.
  • 그룹 함수 외에도 SELECT 절에 포함된 일반 열 이름을 기준으로 정렬할 수 있습니다.