Time Series Analysis in SQL Server
Maham Faisal Khan
Senior Data Science Content Developer
ROW_NUMBER()Unique, ascending integer value starting from 1.
RANK()Ascending integer value starting from 1. Can have ties. Can skip numbers.
DENSE_RANK()Ascending integer value starting from 1. Can have ties. Will not skip numbers.
| RunsScored |
|---|
| 8 |
| 7 |
| 7 |
| 6 |
| 6 |
| 3 |
SELECT
s.RunsScored,
ROW_NUMBER() OVER (
ORDER BY s.RunsScored DESC
) AS rn
FROM dbo.Scores s
ORDER BY
s.RunsScored DESC;
| RunsScored | rn |
|---|---|
| 8 | 1 |
| 7 | 2 |
| 7 | 3 |
| 6 | 4 |
| 6 | 5 |
| 3 | 6 |
SELECT
s.RunsScored,
RANK() OVER (
ORDER BY s.RunsScored DESC
) AS rk,
DENSE_RANK() OVER (
ORDER BY s.RunsScored DESC
) AS dr
FROM dbo.Scores s
ORDER BY
s.RunsScored DESC;
| RunsScored | rk | dr |
|---|---|---|
| 8 | 1 | 1 |
| 7 | 2 | 2 |
| 7 | 2 | 2 |
| 6 | 4 | 3 |
| 6 | 4 | 3 |
| 3 | 6 | 4 |
SELECT
s.Team,
s.RunsScored,
ROW_NUMBER() OVER (
PARTITION BY s.Team
ORDER BY s.RunsScored DESC
) AS rn
FROM dbo.Scores s
ORDER BY
s.RunsScored DESC;
| Team | RunsScored | rn |
|---|---|---|
| AZ | 8 | 1 |
| AZ | 6 | 2 |
| AZ | 3 | 3 |
| FLA | 7 | 1 |
| FLA | 7 | 2 |
| FLA | 6 | 3 |
SELECT
s.Team,
s.RunsScored,
MAX(s.RunsScored) OVER (
PARTITION BY s.Team
) AS MaxRuns
FROM dbo.Scores s
ORDER BY
s.RunsScored DESC;
| Team | RunsScored | MaxRuns |
|---|---|---|
| AZ | 8 | 8 |
| AZ | 6 | 8 |
| AZ | 3 | 8 |
| FLA | 7 | 7 |
| FLA | 7 | 7 |
| FLA | 6 | 7 |
SELECT
s.Team,
s.RunsScored,
MAX(s.RunsScored) OVER() AS MaxRuns
FROM dbo.Scores s
ORDER BY
s.RunsScored DESC;
| Team | RunsScored | MaxRuns |
|---|---|---|
| AZ | 8 | 8 |
| AZ | 6 | 8 |
| AZ | 3 | 8 |
| FLA | 7 | 8 |
| FLA | 7 | 8 |
| FLA | 6 | 8 |
Time Series Analysis in SQL Server