ORDER BY-component (Databricks SQL)

Retourneert de resultaatrijen op een gesorteerde manier in de door de gebruiker opgegeven volgorde. In tegenstelling tot sort BY-component garandeert deze component een totale volgorde in de uitvoer.

Syntaxis

ORDER BY { expression [ sort_direction | nulls_sort_oder ] } [, ...]

sort_direction
  [ ASC | DESC ]

nulls_sort_order
  [ NULLS FIRST | NULLS LAST ]

Parameters

  • expression

    Een expressie van elk type dat wordt gebruikt om een volgorde te bepalen waarin resultaten worden geretourneerd.

    Als de expressie een letterlijke INT-waarde is, wordt deze geïnterpreteerd als een kolompositie in de selectielijst.

  • sort_direction

    Hiermee geeft u de sorteerorde voor de order op expressie op.

    • ASC: De sorteerrichting voor deze expressie is oplopend.
    • DESC: De sorteer volgorde voor deze expressie is aflopend.

    Als de sorteerrichting niet expliciet is opgegeven, worden rijen standaard oplopend gesorteerd.

  • nulls_sort_order

    Hiermee kunt u desgewenst bepalen of NULL-waarden worden geretourneerd vóór/na niet-NULL-waarden. Als null_sort_order is niet opgegeven en nulls sorteren vervolgens eerst als de sorteer volgorde is ASC en NULLS sorteren als laatste als de sorteerorder DESC is.

    • NULLS FIRST: NULL-waarden worden eerst geretourneerd, ongeacht de sorteer volgorde.
    • NULLS LAST: NULL-waarden worden het laatst geretourneerd, ongeacht de sorteer volgorde.

Bij het opgeven van meer dan één expressie vindt sorteren van links naar rechts plaats. Alle rijen worden gesorteerd op de eerste expressie. Als er dubbele waarden voor de eerste expressie zijn, wordt de tweede expressie gebruikt om de volgorde in de groep duplicaten op te lossen, en meer. De resulterende volgorde is niet deterministisch als er dubbele waarden zijn in alle volgorde op expressies.

Voorbeelden

> 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