본문 바로가기
DataBase/Oracle

DQL) ORDER BY 구문 (오름차순 기준, nulls first/nulls last 옵션)

by 박채니 2022. 4. 14.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


ORDER BY

- 결과 집합 처리 시 가장 마지막에 수행 되는 절차

- 추출된 행 간의 순서를 다시 정렬

- 컬럼 기준 오름차순/내림차순

- 오름차순 기준 : 문자형 (사전등재순), 숫자형 (작은 수에서 큰 수), 날짜형 (과거에서 미래)

- asc 오름차순(기본 값), desc 내림차순

 

입사일이 빠른 순서대로 정렬

select
    emp_name 사원명,
    hire_date 입사일
from
    employee
order by
    hire_date desc;

 

이처럼 컬럼명으로도 정렬이 가능하지만,

별칭 혹은 컬럼 순서(인덱스)로도 정렬 가능합니다. (※ SQL의 인덱스는 1부터 시작!!!)

 

-- 별칭으로 정렬
select
    emp_name 사원명,
    hire_date 입사일
from
    employee
order by
--    hire_date desc;
    입사일 desc;
----------------------------------
-- 컬럼순서(인덱스)로 정렬
select
    emp_name 사원명,
    hire_date 입사일
from
    employee
order by
--    hire_date desc;
--    입사일 desc;
    2 desc;

모두 위와 동일한 결과를 출력하게 됩니다.

 

또한, 기준 컬럼은 1개 이상 사용 가능합니다.

사원 정보를 부서 별(내림차순) 이름 순(오름차순)으로 조회

select
    emp_name 사원명,
    dept_code 부서코드
from
    employee
order by
    dept_code desc, emp_name;

null 값은 기본적으로 정렬 시 가장 마지막에 위치하게 됩니다. (오름차순 기준)

따라서 부서코드를 내림차순으로 정렬하니 null 값이 가장 위로 올라오게 되었습니다.

 

이러한 null 값에 대해서 정렬 기준을 제공합니다.

 

☞ nulls first, nulls last 옵션

select
    emp_name 사원명,
    dept_code 부서코드
from
    employee
order by
    dept_code desc nulls last, emp_name;

동일하게 부서코드 내림차순 / 사원명 오름차순 정렬하였지만 'nulls last' 옵션을 이용하여 null 값을 가장 마지막에 배치하였습니다.

 

select
    emp_name 사원명,
    dept_code 부서코드
from
    employee
order by
    dept_code nulls first, emp_name;

이번에는 부서코드 오름차순 / 사원명 오름차순 정렬하였을 때입니다.

nulls first가 없다면 null 값이 가장 마지막 (D9 뒤)에 위치하였겠지만, 'nulls first' 옵션을 이용하여 null 값을 가장 처음에 배치하였습니다.