OneS icon indicating copy to clipboard operation
OneS copied to clipboard

Язык запросов: добавление оконных функций (window funtion)

Open mazzz-igor opened this issue 2 years ago • 2 comments

Добавить в язык запросов оконные функции Оконные функции в SQL начинаются с оператора OVER и настраиваются с помощью операторов PARTITION BY, ORDER BY и ROWS. ANSI-стандарт SQl поддерживает несколько типов оконных функций [1, 2]:

агрегатные – функции агрегирования (SUM, COUNT, AVG, MIN, МАХи прочие, обычно используемые в контексте групп запросов). Эти функции работают на наборе данных, определенном групповым запросом или рамками окна, выполняют арифметические вычисления и возвращают итоговое значение. ранжирующие, которые ранжируют значение для каждой строки в окне (ROW_NUMBER, RANK, DENSE_RANK, NTILE). Полезны, когда, например, нужно чтобы присвоить порядковый номер строке или составить рейтинг. аналитические (функции распределения) – возвращают информацию о распределении данных, используются для статистического анализа данных (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC); функции сдвига (смещения), которые позволяют перемещаться и обращаться к разным строкам в окне относительно текущей строки, а также к значениям в начале или в конце окна (LAG, LEAD, FIRST_VALUE, LAST, VALUEи NTH_VALUE).

Плюсы: огромное количество запросов уменьшится в разы. Например, запросы, выбирающие данные с нарастающим итогом.

mazzz-igor avatar Aug 13 '21 08:08 mazzz-igor

Согласен, мне часто не хватало в запросах результата порциями. Т.е. первые 100, вторые 100 и т.п. (в задачах интеграции)

fixinchik avatar Sep 20 '21 11:09 fixinchik

Хотелось бы также добавить агрегатную функцию аналог STRING_AGG. Если возможно агрегатную функцию МАССИВ, которая реализована в СКД. И уже не агрегатные, но крайне полезные, функции работы с JSON: JSON_VALUE, JSON_QUERY, JSON_PATH_EXIST ISJSON. Такие функции позволили работать с настройками, сохраняемыми в одном поле.

ChugunovAN avatar Mar 15 '24 21:03 ChugunovAN