ORDER BY 절
적용 대상: Databricks SQL Databricks Runtime
사용자가 지정한 순서대로 정렬된 방식으로 결과 행을 반환합니다. SORT BY 절과 달리 이 절은 출력의 전체 순서를 보장합니다.
구문
ORDER BY { { ALL [ sort_direction] [ nulls_sort_oder ] } |
{ expression [ sort_direction ] [ nulls_sort_oder ] } [, ...] }
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
매개 변수
ALL
적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상
발생 순서대로
SELECT
목록의 모든 식을 지정하는 것과 같은 축약형입니다.sort_direction
또는nulls_sort_order
가 지정된 경우 각 식에 적용됩니다.-
결과가 반환되는 순서를 설정하는 데 사용되는 임의 형식의 식입니다.
식이 리터럴 INT 값인 경우 선택 목록에서 열 위치로 해석됩니다.
sort_direction
Order by 식의 정렬 순서를 지정합니다.
ASC
: 이 식의 정렬 방향이 오름차순입니다.DESC
: 이 식의 정렬 순서가 내림차순입니다.
정렬 방향이 명시적으로 지정되지 않으면 기본적으로 행이 오름차순으로 정렬됩니다.
nulls_sort_order
선택적으로 NULL이 아닌 값 앞/뒤에 NULL 값이 반환되는지 여부를 지정합니다.
null_sort_order
를 지정하지 않으면 정렬 순서가ASC
이면 NULL이 먼저 정렬되고 정렬 순서가DESC
이면 NULL이 마지막으로 정렬됩니다.NULLS FIRST
: 정렬 순서에 관계없이 NULL 값이 먼저 반환됩니다.NULLS LAST
: 정렬 순서에 관계없이 NULL 값이 마지막으로 반환됩니다.
둘 이상의 식을 지정할 경우 정렬 방향은 왼쪽에서 오른쪽입니다. 즉, 모든 행이 첫 번째 식을 기준으로 정렬됩니다. 첫 번째 식에서 중복 값이 있는 경우 두 번째 식을 사용하여 중복 항목 그룹 내에서 순서를 확인하는 식입니다. 모든 order by 식에서 중복 값이 있는 경우 결과 순서가 결정적이지 않습니다.
예제
> CREATE TABLE person (id INT, name STRING, age INT);
> INSERT INTO person VALUES
(100, 'John' , 30),
(200, 'Mary' , NULL),
(300, 'Mike' , 80),
(400, 'Jerry', NULL),
(500, 'Dan' , 50);
-- Sort rows by age. By default rows are sorted in ascending manner with NULL FIRST.
> SELECT name, age FROM person ORDER BY age;
Jerry NULL
Mary NULL
John 30
Dan 50
Mike 80
-- Sort rows in ascending manner keeping null values to be last.
> SELECT name, age FROM person ORDER BY age NULLS LAST;
John 30
Dan 50
Mike 80
Mary NULL
Jerry NULL
-- Sort rows by age in descending manner, which defaults to NULL LAST.
> SELECT name, age FROM person ORDER BY age DESC;
Mike 80
Dan 50
John 30
Jerry NULL
Mary NULL
-- Sort rows in ascending manner keeping null values to be first.
> SELECT name, age FROM person ORDER BY age DESC NULLS FIRST;
Jerry NULL
Mary NULL
Mike 80
Dan 50
John 30
-- Sort rows based on more than one column with each column having different
-- sort direction.
> SELECT * FROM person ORDER BY name ASC, age DESC;
500 Dan 50
400 Jerry NULL
100 John 30
200 Mary NULL
300 Mike 80
-- Sort rows based on all columns in the select list
> SELECT * FROM person ORDER BY ALL ASC;
100 John 30
200 Mary NULL
300 Mike 80
400 Jerry NULL
500 Dan 50