Я предполагаю, что Row_Number не действует только на строки рамки окна - PullRequest
0 голосов
/ 30 апреля 2010

а) Цитата взята с http://www.postgresql.org/docs/current/static/tutorial-window.html

для каждой строки, есть набор строк внутри его раздела, называемый его оконной рамкой. Многие (но не все) оконные функции действуют только на строки оконной рамы, а не на весь раздел. По умолчанию, если задано ORDER BY, то кадр состоит из всех строк от начала раздела до текущей строки плюс все последующие строки, которые равны текущей строке в соответствии с предложением ORDER BY

Я предполагаю, что Row_Number не действует только на строки оконной рамы, а вместо этого всегда действует на все строки раздела?

б)

По умолчанию, если указан ORDER BY, то кадр состоит из всех строк от начала раздела до текущей строки плюс все последующие строки, которые равны текущей строке в соответствии с предложением ORDER BY

Я предполагаю, что это верно только для тех оконных функций, которые действуют только на строки оконной рамы (таким образом, приведенная выше цитата не верна для функции ROW_NUMBER ())?

c) http://www.postgresql.org/docs/current/static/tutorial-window.html говорит о оконных функциях PostgreSQL 8.4. Все ли в этой статье также верно для оконных функций Sql Server 2008

1022 * спасибо *

1 Ответ

2 голосов
/ 30 апреля 2010

Предложение ORDER BY в агрегатных оконных функциях пока не поддерживается SQL Server. http://msdn.microsoft.com/en-us/library/ms189461.aspx

Приведенный ниже запрос выдаст вам синтаксическую ошибку

SELECT salary, sum(salary) OVER (ORDER BY salary) FROM empsalary

row_number() не является агрегатной оконной функцией, поэтому она не действует только на строки оконной рамы. Действует на весь раздел. На оконной раме работают только агрегатные функции. И только если поддерживается предложение ORDER BY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...