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

    適用対象: check marked yes 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 値が返されます。

複数の式の並べ替えを指定する場合は、左から右に並べ替えられます。 すべての行は、最初の式によって並べ替えられます。 1 つ目の式に重複する値がある場合は、2 番目の式を使用して、重複するグループ内の順序を解決します。 すべての 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