--Как и групповые функции, позволяют производить вычисления
--COUNT(ip) OVER(PARTITION BY mask) - считает количество записей из столбца ip для значений из столбца mask
--COUNT(ip) OVER() - считает общее количество записей из столбца ip
SELECT DISTINCT cisco, mask,
COUNT(ip) OVER(PARTITION BY mask) AS [TotalIP`sInMask],
COUNT(ip) OVER() AS [TotalIP`s]
FROM billing.dbo.station
--ROW_NUMBER() - присваивает уникальный идентификатор строки
--RANK() - присваивает совпадающим значениям одинаковые номера от начала строки первого совпадения
--DENSE_RANK() - присваивает совпадающим значениям одинаковые номера по порядку
SELECT cisco, mask,
ROW_NUMBER() OVER(ORDER BY mask) AS [ROW_NUMBER],
RANK() OVER(ORDER BY mask) AS [RANK],
DENSE_RANK() OVER(ORDER BY mask) AS [DENSE_RANK]
FROM billing.dbo.station
GROUP BY cisco, mask
--LAG - возвращает предыдущее значение для указанного столбца, сгруппированого по некому столбцу
--LEAD - возвращает следующее значение для указанного столбца, сгруппированого по некому столбцу
--FIRST_VALUE - возвращает первое значение для указанного столбца, сгруппированого по некому столбцу
--LAST_VALUE - возвращает последнее значение для указанного столбца, сгруппированого по некому столбцу
SELECT cisco, mask,
LAG(mask) OVER(ORDER BY cisco) AS [prev],
LEAD(mask) OVER(ORDER BY cisco) AS [next],
FIRST_VALUE(mask) OVER(ORDER BY cisco) AS [first],
LAST_VALUE(mask) OVER(ORDER BY cisco) AS [last]
FROM billing.dbo.station
GROUP BY cisco, mask
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!