Analytic functions in SQL Server are used to perform complex calculations on a set of data within a specific partition, and can be useful in data analysis and business intelligence applications. In this blog, we will discuss all the analytic functions available in SQL Server with examples.
ROW_NUMBER
The
ROW_NUMBER function assigns a unique sequential number to each row within a
partition of a result set.
Example:
SELECT ROW_NUMBER() OVER(ORDER BY Sales DESC) as SalesRank, Salesperson, Sales
FROM
SalesData
RANK
The RANK
function assigns a rank to each row within a partition of a result set, with
ties receiving the same rank.
Example:
SELECT RANK() OVER(PARTITION BY Department ORDER BY Salary DESC) as DepartmentRank, Name, Salary
FROM Employee
DENSE_RANK
The
DENSE_RANK function assigns a rank to each row within a partition of a result
set, with ties receiving the same rank and no gaps in ranking.
Example:
SELECT DENSE_RANK() OVER(PARTITION BY Department ORDER BY Salary DESC) as DepartmentRank, Name, Salary
FROM Employee
NTILE
The NTILE
function divides a result set into a specified number of groups, assigning each
row a group number.
Example:
SELECT NTILE(4) OVER(ORDER BY Sales DESC) as SalesGroup, Salesperson, Sales
FROM
SalesData
LAG
The LAG
function returns the value of a column in a previous row within the same
partition, with an optional offset.
Example:
SELECT
Salesperson, Sales, LAG(Sales, 1) OVER(PARTITION BY Salesperson ORDER BY Date) as PreviousSales
FROM
SalesData
LEAD
The LEAD
function returns the value of a column in a subsequent row within the same
partition, with an optional offset.
Example:
SELECT
Salesperson, Sales, LEAD(Sales, 1) OVER(PARTITION BY Salesperson ORDER BY Date) as NextSales
FROM
SalesData
FIRST_VALUE
The
FIRST_VALUE function returns the value of the first row within a partition of a
result set.
Example:
SELECT
Department, Name, Salary, FIRST_VALUE(Name) OVER(PARTITION BY Department ORDER BY Salary DESC) as TopEarner
FROM Employee
LAST_VALUE
The
LAST_VALUE function returns the value of the last row within a partition of a
result set.
Example:
SELECT
Department, Name, Salary, LAST_VALUE(Name) OVER(PARTITION BY Department ORDER BY Salary DESC) as LowestEarner
FROM Employee
SUM
The SUM
function returns the sum of a column within a partition of a result set.
Example:
SELECT
Department, Name, Salary, SUM(Salary) OVER(PARTITION BY Department) as DepartmentTotal
FROM Employee
AVG
The AVG
function returns the average value of a column within a partition of a result
set.
Example:
SELECT
Department, Name, Salary, AVG(Salary) OVER(PARTITION BY Department) as DepartmentAverage
FROM Employee
MAX
The MAX
function returns the maximum value of a column within a partition of a result
set.
Example:
SELECT
Department, Name, Salary, MAX(Salary) OVER(PARTITION BY Department) as DepartmentMax
FROM Employee
MIN
The MIN
function returns the minimum value of a column within a partition of a result
set.
Example:
SELECT
Department, Name, Salary, MIN(Salary) OVER(PARTITION BY Department) as DepartmentMin
FROM Employee
Reference
Comments
Post a Comment