Spec-Zone.ru › DuckDB

Оператор ORDER BY

ORDER BY — это модификатор вывода. Логически он применяется в самом конце запроса (непосредственно перед LIMIT или OFFSET, если они присутствуют). Оператор ORDER BY сортирует строки по критериям сортировки в порядке возрастания или убывания. Кроме того, каждый оператор ORDER BY может указать, следует ли помещать NULL значения в начало или в конец.

Оператор ORDER BY может содержать одно или несколько выражений, разделенных запятыми. Будет выброшено исключение, если выражения не указаны, так как в этом случае оператор ORDER BY следует удалить. Выражения могут начинаться с произвольного скалярного выражения (например, имя столбца), номера позиции столбца (индексация начинается с 1) или ключевого слова ALL. Каждое выражение может быть дополнительно последовать за модификатором порядка (ASC или DESC, по умолчанию ASC), и/или модификатором порядка NULL (NULLS FIRST или NULLS LAST, по умолчанию NULLS LAST).

ORDER BY ALL

Ключевое слово ALL указывает, что вывод должен быть отсортирован по каждому столбцу в порядке слева направо. Направление этой сортировки можно изменить, используя ORDER BY ALL ASC или ORDER BY ALL DESC и/или NULLS FIRST или NULLS LAST. Обратите внимание, что ALL нельзя использовать совместно с другими выражениями в операторе ORDER BY — оно должно использоваться самостоятельно. См. примеры ниже.

NULL Модификатор порядка

По умолчанию DuckDB сортирует ASC и NULLS LAST, т.е., значения сортируются в порядке возрастания, а значения NULL размещаются в конце. Это идентично порядку сортировки по умолчанию в PostgreSQL. Порядок сортировки по умолчанию можно изменить с помощью следующих опций конфигурации.

Используйте опцию default_null_order для изменения порядка сортировки по умолчанию NULL на NULLS_FIRST, NULLS_LAST, NULLS_FIRST_ON_ASC_LAST_ON_DESC или NULLS_LAST_ON_ASC_FIRST_ON_DESC.

SET default_null_order = 'NULLS_FIRST';

Используйте опцию default_order для изменения направления сортировки по умолчанию на DESC или ASC.

SET default_order = 'DESC';

Сортировки

Текст по умолчанию сортируется с использованием бинарной сравнительной сортировки, что означает, что значения сортируются по своим бинарным значениям UTF-8. Хотя это хорошо работает для ASCII-текста (например, для данных на английском языке), порядок сортировки может быть некорректным для других языков. Для этого DuckDB предоставляет сортировки. Более подробную информацию о сортировках см. на странице Сортировка.

Примеры

Все примеры используют следующую таблицу:

CREATE OR REPLACE TABLE addresses AS
    SELECT '123 Quack Blvd' AS address, 'DuckTown' AS city, '11111' AS zip
    UNION ALL
    SELECT '111 Duck Duck Goose Ln', 'DuckTown', '11111'
    UNION ALL
    SELECT '111 Duck Duck Goose Ln', 'Duck Town', '11111'
    UNION ALL
    SELECT '111 Duck Duck Goose Ln', 'Duck Town', '11111-0001';

Выберите адреса, отсортированные по имени города с использованием порядка по умолчанию для NULL и порядка по умолчанию:

SELECT *
FROM addresses
ORDER BY city;

Выберите адреса, отсортированные по имени города в порядке убывания, а значения NULL в конце:

SELECT *
FROM addresses
ORDER BY city DESC NULLS LAST;

Отсортировать по городу, а затем по почтовому индексу, используя по умолчанию порядок:

SELECT *
FROM addresses
ORDER BY city, zip;

Отсортировать по городу, используя немецкие правила сортировки:

SELECT *
FROM addresses
ORDER BY city COLLATE DE;

ORDER BY ALL Примеры

Отсортировать слева направо (по адресу, затем по городу, затем по почтовому индексу) в порядке возрастания:

SELECT *
FROM addresses
ORDER BY ALL;
адрес город почтовый_индекс
111 Duck Duck Goose Ln Duck Town 11111
111 Duck Duck Goose Ln Duck Town 11111-0001
111 Duck Duck Goose Ln DuckTown 11111
123 Quack Blvd DuckTown 11111

Отсортировать слева направо (по адресу, затем по городу, затем по почтовому индексу) в порядке убывания:

SELECT *
FROM addresses
ORDER BY ALL DESC;
адрес город почтовый_индекс
123 Quack Blvd DuckTown 11111
111 Duck Duck Goose Ln DuckTown 11111
111 Duck Duck Goose Ln Duck Town 11111-0001
111 Duck Duck Goose Ln Duck Town 11111

Синтаксис

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/query_syntax/orderby.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API