Базы данных могут свободно добавлять ограничения к предложению OVER()
. Иногда PARTITION BY [...]
и / или ORDER BY [...]
являются обязательными предложениями, в зависимости от функции агрегирования. PARTITION BY 1
может быть просто фиктивным предложением, используемым для целостности синтаксиса. Следующие два обычно эквивалентны:
[aggregate function] OVER ()
[aggregate function] OVER (PARTITION BY 1)
Обратите внимание, что Sybase SQL Anywhere и CUBRID интерпретируют этот 1
как ссылку на индекс столбца, аналогично тому, что возможно в предложении ORDER BY [...]
. Это может показаться немного удивительным, поскольку навязывает порядок оценки проекции запроса. В вашем случае это будет тогда означать, что следующее эквивалентно
COUNT(*) OVER (PARTITION BY 1)
COUNT(*) OVER (PARTITION BY col_a)
Это любопытное отклонение от интерпретации других баз данных позволяет ссылаться на более сложные выражения группировки.