Руководство по языку sql


Download 1.22 Mb.
Pdf ko'rish
bet5/62
Sana23.04.2023
Hajmi1.22 Mb.
#1393455
1   2   3   4   5   6   7   8   9   ...   62
Bog'liq
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 

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:
1   2   3   4   5   6   7   8   9   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling