본문 바로가기
Database/Oracle

[Oracle SQL] ORDER BY절 : 정렬

by Amy IT 2022. 5. 8.

ORDER BY절을 사용하면 SELECT문에 의해 검색된 결과를 정렬하여 출력할 수 있습니다. ORDER BY절의 기본 문법은 다음과 같으며, 문장 가장 마지막에 적습니다. 

 

SELECT [DISTINCT] {*,column [Alias],...}
FROM table
[WHERE 조건식]
[ORDER BY {column,exp} [ASC|DESC]];

 

ORDER BY 뒤에는 컬럼명이나 별칭, 또는 SELECT절에서 명시된 컬럼의 인덱스 번호가 올 수 있습니다. 정렬 방법은 오름차순(Ascending)과 내림차순(Descending)이 있으며, 기본은 오름차순이므로 정렬 방법을 지정하지 않으면 오름차순으로 정렬됩니다. 

 

사원번호를 기준으로 오름차순 정렬하기.

SELECT empno, ename, sal FROM emp ORDER BY empno;

 

이름을 기준으로 오름차순 정렬하기.

SELECT empno, ename, sal FROM emp ORDER BY ename ASC;

 

월급을 기준으로 내림차순 정렬하기. sal이 SELECT문에서 세 번째로 오므로 3이라는 인덱스 번호를 갖게 됩니다.

SELECT empno, ename, sal FROM emp ORDER BY 3 DESC;

 

월급에 12를 곱하고 커미션을 더한 값을 연봉이라고 정의할 때, 연봉이 높은 순으로 정렬하기. 

SELECT ename "이름", (sal*12)+nvl(comm,0) "연봉" FROM emp ORDER BY "연봉" DESC;

 

오라클은 null값을 가장 큰 값으로 간주합니다. 따라서 오름차순 정렬 시 가장 아래로, 내림차순 정렬 시 가장 위로 위치하게 됩니다. 

SELECT ename, comm FROM emp ORDER BY comm DESC;

 

* 다중 데이터 정렬

정렬 기준을 여러 개로 지정할 경우, 순서대로 각 기준에 따라 정렬됩니다.  

직업을 기준으로 오름차순 정렬한 후, 월급이 높은 순으로 정렬하는 SQL문입니다. 

SELECT ename, job, sal FROM emp ORDER BY job, sal DESC;
SELECT ename, job, sal FROM emp ORDER BY 2, 3 DESC;

직업이 알파벳 순서로 정렬된 후, 그 안에서 월급을 기준으로 다시 내림차순 정렬되는 것을 확인할 수 있습니다.

 

 

이상으로 SELECT문의 기본적인 내용을 정리해 보았습니다. 다음 글에서는 함수에 대해 다루어 보도록 하겠습니다. 

 

 

댓글