다음을 통해 공유


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가 지정된 경우 각 식에 적용됩니다.

  • expression

    결과가 반환되는 순서를 설정하는 데 사용되는 임의 형식의 식입니다.

    식이 리터럴 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