Klausul ORDER BY
Berlaku untuk: Databricks SQL Databricks Runtime
Menampilkan baris hasil yang telah diurutkan sesuai urutan yang ditentukan oleh pengguna. Berbeda dengan klausul SORT BY, klausul ini menjamin urutan total dalam output.
Sintaks
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 ]
Parameter
ALL
Berlaku untuk: Databricks SQL Databricks Runtime 12.2 LTS ke atas
Singkatan yang setara dengan menentukan semua ekspresi dalam
SELECT
daftar dalam urutan yang terjadi. Jikasort_direction
ataunulls_sort_order
ditentukan, ekspresi tersebut berlaku untuk setiap ekspresi.-
Ekspresi jenis apa pun yang digunakan untuk menetapkan urutan tempat hasil ditampilkan.
Jika ekspresi nilai INT literal itu ditafsirkan sebagai posisi kolom dalam daftar pilih.
sort_direction
Menentukan urutan sortir untuk urutan yang didasarkan pada ekspresi.
ASC
: Arah pengurutan untuk ekspresi ini naik.DESC
: Arah pengurutan untuk ekspresi ini adalah turun.
Jika arah pengurutan tidak ditentukan secara eksplisit, maka baris akan diurutkan naik secara default.
nulls_sort_order
Secara opsional menentukan apakah nilai NULL ditampilkan sebelum/sesudah nilai yang bukan NULL. Jika
null_sort_order
tidak ditentukan, NULL akan diurutkan terlebih dahulu jika urutan sortirnya adalahASC
dan NULLS akan diurutkan terakhir jika urutan sortirnya adalahDESC
.NULLS FIRST
: Nilai NULL ditampilkan terlebih dahulu terlepas dari urutan sortir.NULLS LAST
: Nilai NULL ditampilkan terakhir terlepas dari urutan sortir.
Saat menentukan lebih dari satu pengurutan, ekspresi muncul dari kiri ke kanan. Semua baris diurutkan berdasarkan pada ekspresi pertama. Jika ada nilai duplikat untuk ekspresi pertama, ekspresi kedua digunakan untuk menyelesaikan urutan dalam grup duplikat dan seterusnya. Urutan yang dihasilkan tidak bersifat deterministik jika ada nilai duplikat di semua urutkan berdasarkan ekspresi.
Contoh
> 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