Home 8. ORDER BY 절
Post
Cancel

8. ORDER BY 절

ORDER BY 절을 사용하면 SELECT 문의 결과를 정렬할 수 있다.

8.1 기본 문법

항목설명
ASC오름차순(기본값)
DESC내림차순
NULLS FIRST널을 앞쪽으로 정렬
NULLS LAST널을 뒤쪽으로 정렬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT ename, sal
FROM emp
WHERE deptno = 30
ORDER BY sal;

-- sal의 내림차순, comm의 오름차순 정렬
SELECT ename, sal, comm
FROM emp
WHERE deptno = 30
ORDER BY sal DESC, comm;

-- SELECT 절의 열의 위치 지정
SELECT ename, sal, comm
FROM emp
WHERE deptno = 30
ORDER BY 2 DESC, comm;

8.2 활용 예제

조건 정렬

ORDER BY 절에 DECODE 함수나 CASE 표현식을 사용하면 조건에 따라 다른 정렬 기준을 지정할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- job을 MANAGER, CLERK 순서로 먼저 정렬하고, sal를 오름차순으로 정렬
SELECT job, sal
FROM emp
WHERE deptno = 20
ORDER BY DECODE(job, 'MANAGER', 1, 'CLERK', 2), sal;

-- deptno로 정렬하되 deptno가 10인 행은 sal을 내림차순, deptno가 30인 행은 comm과 sal를 오름차순으로 정렬
SELECT deptno, sal, comm
FROM emp
WHERE deptno IN (10, 30)
ORDER BY detpno
      , DECODE(deptno, 10, sal) DESC
      , DECODE(deptno, 30, comm)
      , sal;

동적 정렬

바인드 변수를 사용하면 정렬 순서를 동적으로 조정할 수 있다.

1
2
3
4
5
VAR v1 NUMBER = 1;

SELECT *
FROM dept
ORDER BY DECODE(:v1, 1, dname, 2, loc);

정렬 순서 조정

캐릭터 셋에 따라 특수문자, 숫자, 영문, 한글의 정렬 순서가 달라질 수 있다.

This post is licensed under CC BY 4.0 by the author.