add arrayPartialSort and arrayPartialReverseSort

This commit is contained in:
Yakov Olkhovskiy 2023-04-20 22:27:13 -04:00 committed by GitHub
parent bcf2252fe0
commit 9ca91e618a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -695,7 +695,11 @@ SELECT arraySort((x, y) -> -y, [0, 1, 2], [1, 2, 3]) as res;
:::note "Примечание"
Для улучшения эффективности сортировки применяется [преобразование Шварца](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A8%D0%B2%D0%B0%D1%80%D1%86%D0%B0).
:::
## arrayPartialSort(\[func,\] limit, arr, …) {#array_functions-sort}
То же, что и `arraySort` с дополнительным аргументом `limit`, позволяющем частичную сортировку. Возвращает массив того же размера, как и исходный, в котором элементы `[1..limit]` отсортированы в возрастающем порядке. Остальные элементы `(limit..N]` остаются в неспецифицированном порядке.
## arrayReverseSort(\[func,\] arr, …) {#array_functions-reverse-sort}
Возвращает массив `arr`, отсортированный в нисходящем порядке. Если указана функция `func`, то массив `arr` сначала сортируется в порядке, который определяется функцией `func`, а затем отсортированный массив переворачивается. Если функция `func` принимает несколько аргументов, то в функцию `arrayReverseSort` необходимо передавать несколько массивов, которые будут соответствовать аргументам функции `func`. Подробные примеры рассмотрены в конце описания функции `arrayReverseSort`.
@ -797,6 +801,10 @@ SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res;
└─────────┘
```
## arrayPartialReverseSort(\[func,\] limit, arr, …) {#array_functions-sort}
То же, что и `arrayReverseSort` с дополнительным аргументом `limit`, позволяющем частичную сортировку. Возвращает массив того же размера, как и исходный, в котором элементы `[1..limit]` отсортированы в убывающем порядке. Остальные элементы `(limit..N]` остаются в неспецифицированном порядке.
## arrayUniq(arr, …) {#array-functions-arrayuniq}
Если передан один аргумент, считает количество разных элементов в массиве.