Oracle

4.5 ORDER BY

김휴고 2023. 7. 25. 15:47

4.5 ORDER BY

4.5.1 기본적인 사용

SELECT
FROM
...
ORDER BY {COLUMN_NAME | COLUMN_LIST} [ASC(기본값) | DESC]
select ename, job, sal, hiredate
from emp
order by sal;

SAL값에 따라 오름차순으로 행이 정렬된 것을 확인할 수 있다.

select ename, job, sal, hiredate
from emp
order by sal asc;

위 코드와 동일한 결과로 asc를 생략할 수 있는 것이다.

 

select ename, job, sal, hiredate
from emp
order by sal desc;

desc 옵션을 통해 내림차순으로 정렬할 수 있었다.

 

4.5.2 애매한 정렬 기준

Q. 입사일 순으로 사원을 정렬하라

- 날짜는 최근 날짜일 수록 값이 크다

select ename, job, sal, hiredate
from emp
order by hiredate;

 

Q. 커미션 순으로 정렬하라

- null 값이 나중에 나온다. DBMS마다 다를 수 있다.

select ename, job, sal, comm
from emp
order by comm;

4.5.3 두 개 이상의 정렬 기준 사용하기

1차 정렬의 기준에서 중복이 발생할 때

2차 정렬 기준을 줄 수 있다.

select ename, job, sal, deptno
from emp
order by deptno, sal;

 

1차 기준인 deptno 같은 경우,

2차 기준인 sal 값이 기준이 되어 정렬이 된 것을 확인할 수 있다.

 

select ename, job, sal, deptno
from emp
order by deptno desc, sal desc;

 

오름/내림차순을 적용하려면 각 기준에 개별적으로 적용해줘야 한다.

 

select ename, job, sal, comm, sal * 12 + nvl(comm, 0) ann_sal
from emp
order by sal * 12 + nvl(comm, 0);
select ename, job, sal, comm, sal * 12 + nvl(comm, 0) ann_sal
from emp
order by ann_sal;

위와 같이 order by에 표현식을 쓸 수도 있고, 별칭을 붙여 사용할 수도 있다.