Руководство по языку sql
Download 1.22 Mb. Pdf ko'rish
|
Firebird3 SQL features
PARTITION BY department) percentage
from employee order by id; Результат id department salary percentage -- ---------- ------ ---------- 1 R & D 10.00 0.3448 2 SALES 12.00 0.6000 3 SALES 8.00 0.4000 4 R & D 9.00 0.3103 5 R & D 10.00 0.3448 Сортировка Предложение ORDER BY может быть использовано с секционированием или без него. Предложение ORDER BY внутри OVER задаѐт порядок, в котором оконная функция будет обрабатывать строки. Этот порядок не обязан совпадать с порядком вывода строк. Для стандартных агрегатных функций, предложение ORDER BY заставляет возвращать частичные результаты агрегации по мере обработки записей. Пример: select id, salary, sum(salary) over (order by salary) cumul_salary from employee order by salary; Результат id salary cumul_salary -- ------ ------------ 3 8.00 8.00 4 9.00 17.00 1 10.00 37.00 5 10.00 37.00 Новые возможности языка SQL Firebird 3.0 7 2 12.00 49.00 В этом случае cumul_salary возвращает частичную/накопительную агрегацию (функции SUM). Может показаться странным, что значение 37,00 повторяется для идентификаторов 1 и 5, но так и должно быть. Сортировка (ORDER BY) ключей группирует их вместе, и агрегат вычисляется единожды (но суммируя сразу два значения 10,00). Чтобы избежать этого, вы можете добавить поле ID в конце предложения ORDER BY. Вы можете использовать несколько окон с различными сортировками, и дополнять предложение ORDER BY опциями ASC/DESC и NULLS FIRST/LAST. С секциями предложение ORDER BY работает таким же образом, но на границе каждой секции агрегаты сбрасываются. Все агрегатные функции могут использовать предложение ORDER BY, за исключением LIST(). Download 1.22 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling