SQL에서 조회 결과의 순서를 정하려면 ORDER BY를 사용하고, 필요한 개수만 가져오려면 LIMIT을 사용한다.
두 문법은 보통 함께 사용되며, 정렬한 뒤 상위 N개 데이터를 조회하는 패턴에서 자주 쓰인다.
ORDER BY란
ORDER BY는 조회 결과를 특정 컬럼 기준으로 정렬하는 문법이다.
select userid, amount
from buytbl
order by amount asc;
asc는 오름차순 정렬이다.
숫자는 작은 값부터, 문자는 사전순으로 정렬된다.
select userid, amount
from buytbl
order by amount desc;
desc는 내림차순 정렬이다.
숫자는 큰 값부터 조회된다.
ASC와 DESC 차이
정렬 방식 의미
| ASC | 오름차순 |
| DESC | 내림차순 |
asc는 기본값이라 생략할 수 있다.
select userid, amount
from buytbl
order by amount;
위 쿼리는 아래와 같다.
select userid, amount
from buytbl
order by amount asc;
집계 결과 정렬하기
ORDER BY는 일반 컬럼뿐 아니라 집계 결과에도 사용할 수 있다.
select userid, sum(amount) as `총 구매수량`
from buytbl
group by userid
order by `총 구매수량` desc;
이 쿼리는 사용자별 구매 수량을 합산한 뒤, 구매 수량이 많은 순서로 정렬한다.
별칭으로 정렬하기
SELECT에서 만든 별칭은 ORDER BY에서 사용할 수 있다.
select userid, sum(price * amount) as `총구매금액`
from buytbl
group by userid
order by `총구매금액` desc;
집계식이 길어질수록 별칭을 사용하는 편이 읽기 쉽다.
컬럼 번호로 정렬하기
정렬 기준은 컬럼 번호로도 지정할 수 있다.
select userid, sum(amount) as `총 구매수량`
from buytbl
group by userid
order by 2 desc;
여기서 2는 SELECT 결과의 두 번째 컬럼인 총 구매수량을 의미한다.
다만 컬럼 순서가 바뀌면 의미도 바뀌기 때문에, 실제 코드에서는 별칭으로 정렬하는 편이 더 명확하다.
LIMIT으로 개수 제한하기
LIMIT은 조회 결과에서 가져올 행 개수를 제한한다.
select userid, sum(amount) as `총 구매수량`
from buytbl
group by userid
order by `총 구매수량` desc
limit 3;
이 쿼리는 구매 수량이 많은 사용자 상위 3명을 조회한다.
ORDER BY와 LIMIT 실행 흐름
ORDER BY와 LIMIT을 같이 쓸 때는 순서가 중요하다.
먼저 정렬
그다음 개수 제한
즉, 아래 쿼리는 전체 데이터를 구매금액 기준으로 정렬한 뒤 상위 5개만 가져온다.
select userid, sum(price * amount) as `총구매금액`
from buytbl
group by userid
order by `총구매금액` desc
limit 5;
여러 기준으로 정렬하기
정렬 기준은 하나만 쓸 필요가 없다.
select userid, price, amount
from buytbl
order by price desc, amount asc;
이 경우 먼저 price를 내림차순으로 정렬하고, 가격이 같으면 amount를 오름차순으로 정렬한다.
ORDER BY와 LIMIT 정리
문법 역할
| ORDER BY | 조회 결과 정렬 |
| ASC | 오름차순 |
| DESC | 내림차순 |
| LIMIT | 조회 개수 제한 |
ORDER BY는 결과의 순서를 정하고, LIMIT은 그중 몇 개를 가져올지 정한다.
ORDER BY는 조회 결과를 정렬하고, LIMIT은 정렬된 결과에서 필요한 개수만 가져오는 문법이다.
'Data Analytics > SQL' 카테고리의 다른 글
| SQL INNER JOIN과 LEFT JOIN 차이 | 기준 테이블에 따라 결과가 달라지는 이유 (0) | 2026.05.20 |
|---|---|
| SQL JOIN 정리 | INNER JOIN, LEFT JOIN, RIGHT JOIN 차이 이해하기 (0) | 2026.05.20 |
| SQL WHERE와 HAVING 차이 정리 | 원본 데이터 필터와 집계 결과 필터 (0) | 2026.05.19 |
| SQL GROUP BY와 집계 함수 정리 | SUM, AVG, COUNT로 데이터 요약하기 (0) | 2026.05.19 |
| SQL 서브쿼리 정리 | 쿼리 안에 쿼리를 넣는 이유와 ANY, ALL 차이 (0) | 2026.05.18 |
