Віконні функції дозволені лише в списку SELECT і реченні ORDER BY запиту. Вони заборонені в інших місцях, наприклад у реченнях GROUP BY, HAVING і WHERE. Це тому, що вони логічно виконуються після обробки цих пунктів. Крім того, віконні функції виконуються після невіконних агрегатних функцій.
Використання функцій SQL Server у реченні WHERE ваших запитів може значно вплинути на продуктивність. SQL Server має обчислювати функцію для кожного рядка в таблиці, що може зайняти багато часу, особливо для великих таблиць. Натомість ефективнішим є використання необроблених даних у реченні WHERE, коли це можливо.
Подібно до інших операторів обчислення в SQL, віконних функцій дозволяють виконувати обчислення в наборі рядків або стовпців. Різниця полягає в тому, що у віконних функціях дані не будуть згруповані в один вихідний рядок, а повертатимуть значення для кожного рядка цього вікна.
У віконних функціях SQL, ROWS і RANGE пропозиції використовуються для визначення віконного фрейму, в якому застосовуються обчислення функції. Фрейм вікна визначає підмножину рядків, з якими оперує віконна функція в кожному розділі, визначеному пропозицією PARTITION BY.
Оператори в реченні WHERE
| Оператор | опис |
|---|---|
| >= | Більше або дорівнює |
| <= | Менше або дорівнює |
| <> або != | Не рівні |
| МІЖ | Між певним заданим діапазоном |
Функції вікна дозволені лише в списку вибору та реченні ORDER BY. Рядки результатів запиту визначаються з пропозиції FROM після обробки WHERE , GROUP BY і HAVING , а виконання вікон відбувається перед ORDER BY , LIMIT і SELECT DISTINCT .