إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
إرجاع صفوف النتائج التي تم فرزها داخل كل قسم بالترتيب المحدد من قبل المستخدم. عندما يكون هناك أكثر من قسم SORT BY واحد قد ترجع نتيجة مرتبة جزئيا. يختلف هذا عن عبارة ORDER BY التي تضمن ترتيبا إجماليا للإخراج.
بناء الجملة
SORT BY { expression [ sort_direction nulls_sort_oder ] } [, ...]
sort_direction
[ ASC | DEC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
المعلمات
-
تعبير من أي نوع يستخدم لإنشاء ترتيب محلي للقسم يتم فيه إرجاع النتائج.
إذا كان التعبير قيمة INT حرفية، يتم تفسيره كموضع عمود في قائمة التحديد.
sort_direction
تحديد ترتيب الفرز للفرز حسب التعبير.
ASC: اتجاه الفرز لهذا التعبير تصاعدي.DESC: ترتيب الفرز لهذا التعبير تنازلي.
إذا لم يتم تحديد اتجاه الفرز بشكل صريح، فرز الصفوف تصاعديا بشكل افتراضي.
nulls_sort_order
يحدد اختياريا ما إذا كانت القيم NULL يتم إرجاعها قبل/بعد القيم غير الخالية. إذا
null_sort_orderلم يتم تحديدها، ففرز NULLs أولا إذا كان ترتيبASCالفرز وفرز NULLS الأخير إذا كان ترتيب الفرز هوDESC.NULLS FIRST: يتم إرجاع القيم الخالية أولا بغض النظر عن ترتيب الفرز.NULLS LAST: يتم إرجاع القيم الخالية أخيرا بغض النظر عن ترتيب الفرز.
عند تحديد أكثر من تعبير واحد يتم فرزه من اليسار إلى اليمين. يتم فرز كافة الصفوف داخل القسم حسب التعبير الأول. إذا كانت هناك قيم مكررة للتعبير الأول، يتم استخدام التعبير الثاني لحل الترتيب داخل مجموعة التكرارات وما إلى ذلك. الترتيب الناتج ليس حتميا إذا كانت هناك قيم مكررة عبر كل الترتيب حسب التعبيرات.
الأمثلة
> 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