0% found this document useful (0 votes)
11 views

Data Engineering SQL Window Functions 1719829356

Uploaded by

h7frfv46hk
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Data Engineering SQL Window Functions 1719829356

Uploaded by

h7frfv46hk
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 76

Learning

SQL
75 Windowing
Functions

Shwetank Singh
GritSetGrow - GSGLearn.com
Shwetank Singh
GritSetGrow - GSGLearn.com

1
1. WHAT IS A WINDOW
FUNCTION IN SQL?

A window function performs a


calculation across a set of table
rows related to the current row. It
is used mainly for analytical
purposes and operates within a
specified window of rows.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

2
2. HOW DO YOU
DEFINE A WINDOW IN
SQL?

A window is defined using the


OVER clause in SQL, which
specifies the partitioning and
ordering of rows.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

3
3. WHAT ARE THE
TYPES OF WINDOW
FUNCTIONS
SUPPORTED IN SQL
SERVER?

Aggregate functions, ranking


functions, statistical functions,
and offset functions.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

4
4. WHAT IS THE
DIFFERENCE BETWEEN
A WINDOW FUNCTION
AND AN AGGREGATE
FUNCTION?
An aggregate function groups
rows and returns a single result
for each group, while a window
function returns a result for each
row within the specified window.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

5
5. HOW DO YOU USE
THE ROW_NUMBER()
FUNCTION?

ROW_NUMBER() OVER (PARTITION


BY column ORDER BY column)
assigns a unique sequential
integer to rows within the
partition of a result set.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

6
6. EXPLAIN THE RANK()
FUNCTION.

RANK() OVER (PARTITION BY


column ORDER BY column)
assigns a rank to each row within
the partition of a result set, with
gaps in the rank values if there
are ties.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

7
7. WHAT IS THE
DIFFERENCE BETWEEN
RANK() AND
DENSE_RANK()?

DENSE_RANK() is similar to RANK()


but does not leave gaps in the
ranking values.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

8
8. DESCRIBE THE
NTILE() FUNCTION.

NTILE(n) OVER (PARTITION BY


column ORDER BY column)
distributes rows into a specified
number of roughly equal groups.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

9
9. WHAT DOES THE
LAG() FUNCTION DO?

LAG(column, offset, default) OVER


(PARTITION BY column ORDER BY
column) provides access to a row
at a specified physical offset
before the current row within the
partition.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

10
10. HOW DOES THE
LEAD() FUNCTION
DIFFER FROM LAG()?

LEAD(column, offset, default)


OVER (PARTITION BY column
ORDER BY column) provides
access to a row at a specified
physical offset after the current
row within the partition.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

11
11. EXPLAIN THE USE OF
FIRST_VALUE()
FUNCTION.

FIRST_VALUE(column) OVER
(PARTITION BY column ORDER BY
column) returns the first value in
an ordered set of values.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

12
12. WHAT IS THE
LAST_VALUE()
FUNCTION USED FOR?

LAST_VALUE(column) OVER
(PARTITION BY column ORDER BY
column) returns the last value in
an ordered set of values.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

13
13. HOW DO YOU
CALCULATE A MOVING
AVERAGE USING
WINDOW FUNCTIONS?
Use AVG(column) OVER
(PARTITION BY column ORDER BY
column ROWS BETWEEN n
PRECEDING AND CURRENT ROW) to
calculate a moving average.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

14
14. DESCRIBE THE
PERCENT_RANK()
FUNCTION.

PERCENT_RANK() OVER (PARTITION


BY column ORDER BY column)
calculates the relative rank of a
row within the partition as a
percentage.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

15
15. WHAT IS THE
CUME_DIST()
FUNCTION?

CUME_DIST() OVER (PARTITION BY


column ORDER BY column)
calculates the cumulative
distribution of a value within the
partition.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

16
16. EXPLAIN
PERCENTILE_CONT()
FUNCTION.

PERCENTILE_CONT(n) WITHIN
GROUP (ORDER BY column) OVER
(PARTITION BY column) computes
a percentile based on continuous
distribution.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

17
17. HOW DOES
PERCENTILE_DISC()
DIFFER FROM
PERCENTILE_CONT()?
PERCENTILE_DISC(n) WITHIN
GROUP (ORDER BY column) OVER
(PARTITION BY column) computes
a percentile based on discrete
distribution.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

18
18. WHAT IS A FRAME
IN THE CONTEXT OF
WINDOW FUNCTIONS?

A frame defines a subset of rows


within the partition to apply the
window function, specified using
ROWS or RANGE clauses.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

19
19. HOW DO YOU USE
THE ROWS BETWEEN
CLAUSE?

ROWS BETWEEN n PRECEDING AND


m FOLLOWING specifies a frame
of rows relative to the current row
for the window function.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

20
20. WHAT IS THE
RANGE CLAUSE USED
FOR IN WINDOW
FUNCTIONS?
The RANGE clause defines a
frame of rows based on the value
range of the rows, not their
physical positions.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

21
21. HOW CAN YOU
EMULATE IGNORE
NULLS IN SQL SERVER?

Use subqueries or conditional


aggregation to ignore nulls in
window functions since SQL
Server does not directly support
IGNORE NULLS.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

22
22. EXPLAIN THE
CONCEPT OF
WINDOWING IN SQL.

Windowing allows calculations


across a set of table rows related
to the current row using window
functions.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

23
23. WHAT ARE THE
BENEFITS OF USING
WINDOW FUNCTIONS?

Window functions simplify


complex queries, improve
readability, and often provide
better performance for analytical
queries.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

24
24. CAN WINDOW
FUNCTIONS BE USED IN
THE WHERE CLAUSE?

No, window functions cannot be


used in the WHERE clause directly.
They are used in the SELECT or
ORDER BY clauses.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

25
25. HOW DO WINDOW
FUNCTIONS IMPROVE
PERFORMANCE?

Window functions can perform


calculations without requiring
additional joins or subqueries,
reducing the complexity and
execution time.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

26
26. WHAT IS THE
DIFFERENCE BETWEEN
PARTITION BY AND
ORDER BY IN WINDOW
FUNCTIONS?
PARTITION BY divides the result set
into partitions, and ORDER BY
specifies the order of rows within
each partition.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

27
27. HOW DO YOU
CALCULATE RUNNING
TOTALS USING
WINDOW FUNCTIONS?
Use SUM(column) OVER
(PARTITION BY column ORDER BY
column ROWS UNBOUNDED
PRECEDING) for running totals.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

28
28. DESCRIBE THE USE
OF COUNT() AS A
WINDOW FUNCTION.

COUNT(column) OVER (PARTITION


BY column ORDER BY column)
counts the number of rows within
the window frame.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

29
29. HOW CAN YOU
USE WINDOW
FUNCTIONS TO
IDENTIFY GAPS AND
ISLANDS IN DATA?

Use LAG() and LEAD() functions to


compare current and
previous/next row values to
identify gaps and islands.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

30
30. WHAT ARE
HYPOTHETICAL SET
FUNCTIONS?

Hypothetical set functions, like


PERCENTILE_CONT and
PERCENTILE_DISC, compute
percentiles and other statistical
measures based on hypothetical
distributions.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

31
31. EXPLAIN THE
STRING_AGG()
FUNCTION.

STRING_AGG(column, delimiter)
WITHIN GROUP (ORDER BY
column) OVER (PARTITION BY
column) concatenates values
into a single string within each
partition.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

32
32. HOW DOES GROUP
BY DIFFER FROM
PARTITION BY IN
WINDOW FUNCTIONS?
GROUP BY aggregates rows into
groups and reduces the result
set, while PARTITION BY defines
partitions for window functions
without reducing the result set.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

33
33. WHAT IS THE
SIGNIFICANCE OF
ROWS UNBOUNDED
PRECEDING?
ROWS UNBOUNDED PRECEDING
specifies the frame from the first
row in the partition to the current
row.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

34
34. HOW DO YOU
REMOVE DUPLICATES
USING WINDOW
FUNCTIONS?
Use ROW_NUMBER() OVER
(PARTITION BY column ORDER BY
column) to assign unique
numbers and then filter by the
row number to remove
duplicates.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

35
35. CAN WINDOW
FUNCTIONS BE
NESTED?

No, window functions cannot be


nested within each other in the
same query.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

36
36. HOW DO YOU
CALCULATE A MOVING
SUM USING WINDOW
FUNCTIONS?
Use SUM(column) OVER
(PARTITION BY column ORDER BY
column ROWS BETWEEN n
PRECEDING AND CURRENT ROW) to
calculate a moving sum.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

37
37. EXPLAIN THE
CONCEPT OF FRAMING
IN WINDOW
FUNCTIONS.
Framing specifies the subset of
rows within a partition for the
window function, defined by
ROWS or RANGE clauses.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

38
38. HOW DO YOU USE
THE OVER CLAUSE
WITH PARTITION BY
AND ORDER BY?
OVER (PARTITION BY column
ORDER BY column) defines the
window frame by partitioning and
ordering the rows.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

39
39. WHAT IS THE
PURPOSE OF NTILE() IN
WINDOW FUNCTIONS?

NTILE() divides the result set into a


specified number of
approximately equal groups.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

40
40. HOW DO WINDOW
FUNCTIONS HANDLE
TIES IN RANKING?

Functions like RANK() leave gaps


for ties, while DENSE_RANK() does
not leave gaps.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

41
41. DESCRIBE HOW TO
CALCULATE THE
MEDIAN USING
WINDOW FUNCTIONS.
Use PERCENTILE_CONT(0.5)
WITHIN GROUP (ORDER BY
column) OVER (PARTITION BY
column) to calculate the median.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

42
42. WHAT ARE THE
LIMITATIONS OF
WINDOW FUNCTIONS
IN SQL SERVER?
Limitations include the inability to
use window functions in WHERE,
HAVING, and GROUP BY clauses,
and lack of support for some
standard features like IGNORE
NULLS.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

43
43. HOW DO YOU
HANDLE NULL VALUES
IN WINDOW
FUNCTIONS?
Use conditional expressions or
subqueries to handle NULL values,
as window functions do not
directly support IGNORE NULLS.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

44
44. WHAT IS THE
WINDOW CLAUSE
USED FOR?

The WINDOW clause allows you to


reuse window definitions within
the same query, improving
readability and maintainability.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

45
45. HOW DO YOU
IMPLEMENT PAGING
USING WINDOW
FUNCTIONS?
Use ROW_NUMBER() OVER (ORDER
BY column) to assign row
numbers and then filter by the
desired page range.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

46
46. WHAT ARE
STATISTICAL WINDOW
FUNCTIONS?

Statistical window functions


include PERCENTILE_CONT,
PERCENTILE_DISC, PERCENT_RANK,
and CUME_DIST, used for
statistical calculations.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

47
47. EXPLAIN THE
CONCEPT OF ROW
PATTERN
RECOGNITION IN SQL.
Row pattern recognition allows
the detection of patterns within
sequences of rows, a feature not
yet fully supported in SQL Server.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

48
48. HOW CAN
WINDOW FUNCTIONS
BE OPTIMIZED IN SQL
SERVER?
Optimization techniques include
indexing, parallelism
improvements, and batch-mode
processing for better
performance.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

49
49. DESCRIBE THE USE
OF FIRST_VALUE AND
LAST_VALUE IN
WINDOW FUNCTIONS.
FIRST_VALUE and LAST_VALUE
return the first and last values in
the window frame, respectively,
based on the specified ordering.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

50
50. HOW DO YOU
PERFORM
CONDITIONAL
AGGREGATION USING
WINDOW FUNCTIONS?
Use CASE expressions within
aggregate functions to perform
conditional aggregation, e.g.,
SUM(CASE WHEN condition THEN
column ELSE 0 END) OVER
(PARTITION BY column).

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

51
51. HOW DO YOU CALCULATE
A CUMULATIVE SUM USING
WINDOW FUNCTIONS?

Example:
SELECT orderid, val, SUM(val)
OVER (ORDER BY orderid) AS
cumulative_sum
FROM Sales.OrderValues;

This query calculates the


cumulative sum of the val
column ordered by orderid.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

52
52. EXPLAIN THE
ROW_NUMBER() FUNCTION
WITH AN EXAMPLE.

Example:
SELECT orderid, val, ROW_NUMBER()
OVER (ORDER BY val DESC) AS
row_num
FROM Sales.OrderValues;

This query assigns a unique


sequential integer to rows
ordered by val in descending
order.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

53
53. HOW DO YOU USE LAG()
TO FIND THE PREVIOUS
ROW'S VALUE?

Example:
SELECT orderid, val, LAG(val, 1) OVER
(ORDER BY orderid) AS prev_val
FROM Sales.OrderValues;

This query returns the previous


row's val value for each row.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

54
54. PROVIDE AN EXAMPLE OF
USING LEAD() TO FIND THE
NEXT ROW'S VALUE.

Example:
SELECT orderid, val, LEAD(val, 1) OVER
(ORDER BY orderid) AS next_val
FROM Sales.OrderValues;

This query returns the next row's


val value for each row.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

55
55. HOW DO YOU
CALCULATE A MOVING
AVERAGE USING WINDOW
FUNCTIONS?
Example:
SELECT orderid, val,
AVG(val) OVER (ORDER BY orderid
ROWS BETWEEN 2 PRECEDING AND
CURRENT ROW) AS moving_avg
FROM Sales.OrderValues;

This query calculates a moving


average over the current and two
preceding rows.
DATA ENGINEERING - SQL
WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

56
56. EXPLAIN HOW TO RANK
ROWS USING RANK().

Example:
SELECT orderid, val,
RANK() OVER (ORDER BY val DESC)
AS rnk
FROM Sales.OrderValues;

This query ranks rows based on


val in descending order.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

57
57. HOW DO YOU USE
DENSE_RANK() TO RANK
ROWS WITHOUT GAPS?

Example:
SELECT orderid, val, DENSE_RANK()
OVER (ORDER BY val DESC) AS
dense_rnk
FROM Sales.OrderValues;

This query ranks rows based on


val in descending order without
gaps in the rank values.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

58
58. DESCRIBE THE NTILE()
FUNCTION WITH AN
EXAMPLE.

Example:
SELECT orderid, val, NTILE(4) OVER
(ORDER BY val) AS quartile
FROM Sales.OrderValues;

This query divides the result set


into four approximately equal
groups.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

59
59. HOW DO YOU USE
FIRST_VALUE() TO GET THE
FIRST VALUE IN A WINDOW?

Example:
SELECT orderid, val, FIRST_VALUE(val)
OVER (ORDER BY orderid) AS first_val
FROM Sales.OrderValues;

This query returns the first val


value based on orderid ordering.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

60
60. PROVIDE AN EXAMPLE
OF USING LAST_VALUE()
TO GET THE LAST VALUE IN
A WINDOW.

Example:
SELECT orderid, val, LAST_VALUE(val)
OVER (ORDER BY orderid ROWS
BETWEEN UNBOUNDED PRECEDING AND
UNBOUNDED FOLLOWING) AS last_val
FROM Sales.OrderValues;

This query returns the last val


value based on orderid ordering.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

61
61. HOW DO YOU CALCULATE
THE DIFFERENCE BETWEEN
CURRENT AND PREVIOUS
ROW VALUES USING LAG()?

Example:
SELECT orderid, val,
val - LAG(val, 1) OVER (ORDER BY
orderid) AS diff
FROM Sales.OrderValues;

This query calculates the


difference between the current
and previous row's val.
DATA ENGINEERING - SQL
WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

62
62. EXPLAIN THE USE OF
PERCENT_RANK() WITH AN
EXAMPLE.

Example:
SELECT orderid, val,
PERCENT_RANK() OVER (ORDER BY
val) AS percent_rank
FROM Sales.OrderValues;

This query calculates the relative


rank of each row as a percentage
of the total rows.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

63
63. HOW DO YOU
CALCULATE THE CUMULATIVE
DISTRIBUTION USING
CUME_DIST()?

Example:
SELECT orderid, val,
CUME_DIST() OVER (ORDER BY val) AS
cumulative_dist
FROM Sales.OrderValues;

This query calculates the


cumulative distribution of each
row's val.
DATA ENGINEERING - SQL
WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

64
64. PROVIDE AN EXAMPLE OF
USING PERCENTILE_CONT()
TO CALCULATE A
PERCENTILE.

Example:
SELECT orderid, val,
PERCENTILE_CONT(0.5) WITHIN GROUP
(ORDER BY val) OVER () AS median
FROM Sales.OrderValues;

This query calculates the median


val.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

65
65. EXPLAIN HOW TO USE
PERCENTILE_DISC() TO
CALCULATE A PERCENTILE.

Example:
SELECT orderid, val,
PERCENTILE_DISC(0.5) WITHIN
GROUP (ORDER BY val) OVER () AS
median
FROM Sales.OrderValues;

This query calculates the median


val based on discrete distribution.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

66
66. HOW DO YOU
CALCULATE A RUNNING
TOTAL USING WINDOW
FUNCTIONS?

Example:
SELECT orderid, val, SUM(val) OVER
(ORDER BY orderid ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT
ROW) AS running_total
FROM Sales.OrderValues;

This query calculates a running


total of val.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

67
67. DESCRIBE THE USE OF THE
RANGE CLAUSE WITH AN
EXAMPLE.
Example:
SELECT orderid, val, SUM(val) OVER
(ORDER BY orderid RANGE BETWEEN
INTERVAL '1' DAY PRECEDING AND
CURRENT ROW) AS range_sum
FROM Sales.OrderValues;

This query calculates the sum of


val for rows within the specified
range of days.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

68
68. HOW DO YOU
IMPLEMENT A SLIDING
WINDOW CALCULATION?

Example:
SELECT orderid, val, AVG(val) OVER
(ORDER BY orderid ROWS BETWEEN 2
PRECEDING AND 2 FOLLOWING) AS
sliding_avg
FROM Sales.OrderValues;

This query calculates a sliding


average over a window of five
rows centered on the current row.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

69
69. PROVIDE AN EXAMPLE
OF USING LAG() AND LEAD()
TOGETHER.
Example:
SELECT orderid, val, LAG(val, 1) OVER
(ORDER BY orderid) AS prev_val,
LEAD(val, 1) OVER (ORDER BY orderid)
AS next_val FROM Sales.OrderValues;

This query returns the previous


and next val values for each row.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

70
70. EXPLAIN HOW TO
PARTITION DATA USING
WINDOW FUNCTIONS.

Example:
SELECT orderid, customerid, val,
SUM(val) OVER (PARTITION BY
customerid ORDER BY orderid) AS
customer_total
FROM Sales.OrderValues;

This query calculates the running


total of val for each customerid.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

71
71. HOW DO YOU USE
WINDOW FUNCTIONS TO
CALCULATE THE
PERCENTAGE OF A TOTAL?

Example:
SELECT orderid, val, val * 100.0 /
SUM(val) OVER () AS
percent_of_total
FROM Sales.OrderValues;

This query calculates the


percentage of each val of the
total sum of val.
DATA ENGINEERING - SQL
WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

72
72. PROVIDE AN EXAMPLE
OF USING NTILE() TO CREATE
DECILES.

Example:
SELECT orderid, val, NTILE(10) OVER
(ORDER BY val) AS decile
FROM Sales.OrderValues;

This query divides the result set


into ten approximately equal
groups (deciles).

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

73
73. HOW DO YOU USE
WINDOW FUNCTIONS TO FIND
THE TOP N ROWS PER GROUP?
Example:
WITH RankedOrders
AS (SELECT orderid, customerid, val,
ROW_NUMBER() OVER (PARTITION BY
customerid ORDER BY val DESC) AS rank
FROM Sales.OrderValues)
SELECT * FROM RankedOrders
WHERE rank <= 3;

This query returns the top 3 orders by


value for each customer.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

74
74. EXPLAIN HOW TO USE
WINDOW FUNCTIONS FOR
DATA DE-DUPLICATION.

Example:
WITH CTE AS
(SELECT orderid, val,
ROW_NUMBER() OVER (PARTITION BY
val ORDER BY orderid) AS rn
FROM Sales.OrderValues)
DELETE FROM CTE WHERE rn > 1;

This query deletes duplicate rows


based on the val column.

DATA ENGINEERING - SQL


WINDOW FUNCTIONS
Shwetank Singh
GritSetGrow - GSGLearn.com

75
75. HOW DO YOU PERFORM
CUMULATIVE AGGREGATION
USING WINDOW
FUNCTIONS?
Example:
SELECT orderid, val, SUM(val) OVER
(ORDER BY orderid ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT
ROW) AS cumulative_sum
FROM Sales.OrderValues;
This query calculates the
cumulative sum of val for all
preceding rows including the
current row.
DATA ENGINEERING - SQL
WINDOW FUNCTIONS

You might also like