SORT BY yan tümcesi
Şunun için geçerlidir: Databricks SQL denetimi yes Databricks Runtime
Her bölüm içinde kullanıcı tarafından belirtilen düzende sıralanmış sonuç satırlarını döndürür. Birden fazla bölüm SORT BY
olduğunda kısmen sıralanmış bir sonuç döndürebilir. Bu, çıkışın toplam sırasını garanti eden ORDER BY yan tümcesinden farklıdır.
Sözdizimi
SORT BY { expression [ sort_direction nulls_sort_oder ] } [, ...]
sort_direction
[ ASC | DEC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
Parametre
-
Sonuçların döndürüldiği bir bölüm yerel sırası oluşturmak için kullanılan herhangi bir türde ifade.
İfade değişmez bir INT değeriyse, seçme listesinde sütun konumu olarak yorumlanır.
sort_direction
Sıralama ölçütü ifadesinin sıralama düzenini belirtir.
ASC
: Bu ifadenin sıralama yönü artan düzendedir.DESC
: Bu ifadenin sıralama düzeni azalan düzendedir.
Sıralama yönü açıkça belirtilmezse, varsayılan olarak satırlar artan düzende sıralanır.
nulls_sort_order
İsteğe bağlı olarak NULL değerlerin NULL olmayan değerlerden önce/sonra döndürülip döndürülmeyeceğini belirtir. Belirtilmezse
null_sort_order
, sıralama düzeni ise ÖNCE NULL'ler sıralanır ve sıralama düzeniASC
ise NULLS en sonda sıralanırDESC
.NULLS FIRST
: Null değerler sıralama düzeninden bağımsız olarak önce döndürülür.NULLS LAST
: NULL değerleri sıralama düzeninden bağımsız olarak en son döndürülür.
Birden fazla ifade belirtirken sıralama soldan sağa gerçekleşir. Bölüm içindeki tüm satırlar ilk ifadeye göre sıralanır. İlk ifade için yinelenen değerler varsa, ikinci ifade yinelenenler grubu içindeki sırayı çözümlemek için kullanılır ve bu şekilde devam eder. Elde edilen sıra, ifadelere göre tüm sıralamada yinelenen değerler varsa belirleyici değildir.
Örnekler
> CREATE TEMP VIEW person (zip_code, name, age)
AS VALUES (94588, 'Zen Hui', 50),
(94588, 'Dan Li', 18),
(94588, 'Anil K', 27),
(94588, 'John V', NULL),
(94511, 'David K', 42),
(94511, 'Aryan B.', 18),
(94511, 'Lalit B.', NULL);
-- Use `REPARTITION` hint to partition the data by `zip_code` to
-- examine the `SORT BY` behavior. This is used in rest of the
-- examples.
-- Sort rows by `name` within each partition in ascending manner
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY name;
Anil K 27 94588
Dan Li 18 94588
John V NULL 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. NULL 94511
-- Sort rows within each partition using column position.
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY 1;
Anil K 27 94588
Dan Li 18 94588
John V null 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. null 94511
-- Sort rows within partition in ascending manner keeping null values to be last.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age NULLS LAST;
18 Dan Li 94588
27 Anil K 94588
50 Zen Hui 94588
NULL John V 94588
18 Aryan B. 94511
42 David K 94511
NULL Lalit B. 94511
-- Sort rows by age within each partition in descending manner, which defaults to NULL LAST.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age DESC;
50 Zen Hui 94588
27 Anil K 94588
18 Dan Li 94588
NULL John V 94588
42 David K 94511
18 Aryan B. 94511
NULL Lalit B. 94511
-- Sort rows by age within each partition in descending manner keeping null values to be first.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age DESC NULLS FIRST;
NULL John V 94588
50 Zen Hui 94588
27 Anil K 94588
18 Dan Li 94588
NULL Lalit B. 94511
42 David K 94511
18 Aryan B. 94511
-- Sort rows within each partition based on more than one column with each column having
-- different sort direction.
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY name ASC, age DESC;
Anil K 27 94588
Dan Li 18 94588
John V null 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. null 94511