MySQL 정렬&그룹화하기 (GROUP & ORDER)


1. GROUP BY


여러개의 컬럼을 특정 데이터를 기준삼아 같은것 끼리 묶어줄 수 있다. 여러조건으로 그룹 시 가능한 모든 조합으로 그룹화한다.

GROUP BY 컬럼명 ON 조건1 , 조건 2

다음과 같이 학생DB의가 STUDENTS_DB라는 테이블로 저장되어 있다고 하자.

GRADE NAME MAJOR
3 홍*동 문과
2 김*수 문과
3 박*우 이과
2 이*현 이과
3 장*우 문과
2 배*수 이과

다음과 같이 GRADE, MAJOR로 그룹화하여 각 문/이과별 학년별 학생수를 카운트 할 수 있다.

SELECT MAJOR,NAME,COUNT(*)
FROM STUDENTS_DB
GROUP BY GRADE, NAME 

해당 내용은 다음 결과를 도출한다.

MAJOR GRADE COUNT
문과 1 246
문과 2 310
문과 3 299
이과 1 142
이과 2 133
이과 3 157

문/이과 * 학년(1/2/3)으로 이루어진 총 6컬럼의 테이블을 확인할 수 있다.


2. ORDER BY


SQL쿼리로 도출된 결과를 조건에 따라 정렬할 수 있다.
여러번 정렬 시 ,로 각 조건을 연결하고, 뒤에서 부터 순차적으로 정렬된다.
(앞의 조건으로 정렬하되, 같은조건일 때 뒤의 조건으로 정렬)

ORDER BY 컬럼명 ON 조건1 [ASC or DESC] , 조건2
조건 적용방향

오름차순(ASC)은 생략가능, DESC를 추가해 내림차순으로 정렬가능
다음과 같은 상품 테이블 GOODS_DB이 있다고 하자.

NAME PRICE COUNT
PEN 500 150
ERASER 300 30
RULER 700 20
MAGNET 700 30
PAPER 200 150
GLUE 500 100
SELECT * 
FROM GOODS_DB GD
ORDER BY GD.COUNT DESC, GD.PRICE 

해당 쿼리문을 작성하면, 아래의 결과를 도출한다.

NAME PRICE COUNT
PAPER 200 150
ERASER 300 30
PEN 500 150
GLUE 500 100
MAGNET 700 30
RULER 700 20

가장 좌측의 조건인 COUNT기준으로 내림차순 정렬하지만,
같은조건일때는 먼저 정렬했던, PRICE기준으로 정렬(오름차순)된다.

3. 연관문서


연관문서

0. SQL 개요
1. MySQL 조작어

You might also enjoy