데이터를 조회할 때, 정렬은 아주 빈번하게 쓰이는 기능 중 하나입니다. 예를 들어, 직원 목록을 월급이 높은 순으로 보고 싶거나, 영업 데이터를 날짜가 빠른 순으로 확인하고 싶을 때가 있죠. 이럴 때 사용하는 구문이 바로 ORDER BY입니다. 이번 글에서는 ORDER BY 구문의 기본 사용법부터 실무 예시, 주의사항 등을 살펴보겠습니다.
sql
코드 복사
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
[WHERE 조건]
GROUP BY 그룹화_컬럼
ORDER BY 컬럼A [ASC | DESC], 컬럼B [ASC | DESC], ...;
ORDER BY 컬럼A DESC → 컬럼A 값이 큰 것부터ORDER BY 컬럼A DESC, 컬럼B ASCsql
코드 복사
SELECT name, MonthlyIncome
FROM employee
ORDER BY MonthlyIncome ASC;
name)과 월급(MonthlyIncome)을 조회ASC는 생략 가능하므로 ORDER BY MonthlyIncome;로 써도 같은 결과sql
코드 복사
SELECT name, MonthlyIncome
FROM employee
ORDER BY MonthlyIncome DESC;
sql
코드 복사
SELECT Department, name, MonthlyIncome
FROM employee
ORDER BY Department ASC, MonthlyIncome DESC;
집계 함수를 사용해 그룹화한 뒤, 그 결과를 정렬하려면 GROUP BY와 ORDER BY를 함께 씁니다.
sql
코드 복사
SELECT Department, AVG(MonthlyIncome) AS avg_income
FROM employee
GROUP BY Department
ORDER BY avg_income DESC;
일부 DBMS에서는 SELECT 목록 중 몇 번째 컬럼을 기준으로 정렬할 수도 있습니다(오래된 SQL 스타일).
sql
코드 복사
SELECT Department, MonthlyIncome
FROM employee
ORDER BY 2 DESC; -- 두 번째 컬럼(MonthlyIncome)을 기준으로 내림차순 정렬
ORDER BY에는 컬럼명 뿐만 아니라, 표현식(expression)이나 별칭(alias)도 사용 가능합니다.
sql
코드 복사
SELECT product_id, price, quantity, (price * quantity) AS total_amount
FROM sales
ORDER BY (price * quantity) DESC;
total_amount가 있다면, ORDER BY total_amount DESC로도 가능sql
코드 복사
SELECT name, department,
CASE
WHEN department = 'Sales' THEN 1
ELSE 2
END AS dept_order
FROM employee
ORDER BY dept_order, name;
Sales인 직원을 먼저 보여주고(1), 그 뒤에 다른 부서 직원을 보여주기(2)많은 경우 정렬된 결과에서 상위 N개만 보고 싶을 때가 있습니다(예: 월급 TOP 10).
MySQL과 MariaDB, PostgreSQL 등에서는 LIMIT, Oracle의 경우 FETCH FIRST N ROWS, SQL Server는 TOP N 등을 사용합니다.
sql
코드 복사
SELECT name, MonthlyIncome
FROM employee
ORDER BY MonthlyIncome DESC
LIMIT 10;
sql
코드 복사
SELECT name, MonthlyIncome
FROM employee
ORDER BY MonthlyIncome DESC
FETCH FIRST 10 ROWS ONLY;
ORDER BY 컬럼 ASC NULLS FIRST 또는 NULLS LAST 같은 구문이 지원되기도 함 (Oracle, PostgreSQL 등)ORDER BY는 SQL에서 결과를 원하는 순서로 정렬하기 위한 핵심 구문입니다.
ASC(오름차순)와 DESC(내림차순) 키워드를 사용LIMIT(MySQL) / FETCH FIRST N ROWS(Oracle) 등과 결합해 상위 N개만 추출 가능이로써 데이터 조회 시 가장 많이 사용되는 SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY 흐름이 어느 정도 마무리됩니다.