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

SQL Window Functions - Introduction

Uploaded by

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

SQL Window Functions - Introduction

Uploaded by

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

SQL Window Functions

Introduction to MySQL Window Functions


Introduction to MySQL Window Functions

MySQL Window Functions

an advanced SQL tool performing a calculation for every record in the


data set, using other records associated with the specified one from the table
Introduction to MySQL Window Functions

MySQL Window Functions

an advanced SQL tool performing a calculation for every record in the


data set, using other records associated with the specified one from the table

- an entire table from a database


- a part of a table
- a result set obtained by using tools such as joins
Introduction to MySQL Window Functions

MySQL Window Functions

an advanced SQL tool performing a calculation for every record in the


data set, using other records associated with the specified one from the table

= “the current row”


Introduction to MySQL Window Functions

MySQL Window Functions

an advanced SQL tool performing a calculation for every record in the


data set, using other records associated with the specified one from the table

= “the current row”


= the window over which the given function
evaluation will be performed
Introduction to MySQL Window Functions

MySQL Window Functions

an advanced SQL tool performing a calculation for every record in the


data set, using other records associated with the specified one from the table

= “the current row”


= the window over which the given function
evaluation will be performed

= acts as the set of rows on which the


given function will be applied
Introduction to MySQL Window Functions

Using Window Functions is similar yet not identical to using


Aggregate Functions
Introduction to MySQL Window Functions

MySQL Window Functions


Introduction to MySQL Window Functions

MySQL Window Functions

Aggregate window functions


= aggregate functions used in
the context of window functions
Introduction to MySQL Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions


= aggregate functions used in
the context of window functions
Introduction to MySQL Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions

Ranking window functions Value window functions


Introduction to MySQL Window Functions

Next:

The ROW_NUMBER() Window Function and a Relevant MySQL Syntax


The ROW_NUMBER() Window Function
and a Relevant MySQL Syntax
ROW_NUMBER() and a Relevant MySQL Syntax

One of the syntax types available for applying window


functions:

SELECT
...,
ROW_NUMBER() OVER () AS ...
FROM
...
;
ROW_NUMBER() and a Relevant MySQL Syntax

window specification: action:

None = an empty OVER clause ROW_NUMBER() will perform the


relevant evaluations on all
query rows = a single partition

containing PARTITION BY the data will be organized into


partitions

containing ORDER BY arrange the values (in an


ascending or descending order)
ROW_NUMBER() and a Relevant MySQL Syntax

Next:

- Use several window functions in the same query


MySQL Window Functions Syntax
MySQL Window Functions Syntax

The same output can be obtained if we used a WINDOW clause

SELECT
...,
ROW_NUMBER() OVER () AS ...
FROM
...
;
MySQL Window Functions Syntax

The same output can be obtained if we used a WINDOW clause

SELECT
...,
ROW_NUMBER() OVER alias AS ...
FROM
...
WINDOW alias AS ()
;
MySQL Window Functions Syntax

naming windows is way more practical and a sign of best


practice when:

- we have a query employing several window functions


- we need to refer to the same window specification multiple times
throughout a query
MySQL Window Functions Syntax

a window name ≠ a window function name


e.g. w e.g. ROW_NUMBER()
The PARTITION BY Clause vs the GROUP BY clause
PARTITION BY vs GROUP BY

SELECT
...,
ROW_NUMBER() OVER (PARTITION BY ...) AS ...
FROM
...;

SELECT
...,
FROM
...
GROUP BY;
PARTITION BY vs GROUP BY

PARTITION BY GROUP BY

Reduces the number


of records returned

Affects how the window


function result will
be obtained

can only be used within


the context of applying
window functions
The MySQL RANK() and DENSE_RANK()
Window Functions
RANK() and DENSE_RANK()

You may prefer to assign the same rank to records


representing identical values
What rank values are assigned to the records subsequent to the records
with an identical value?

the focus is on:

RANK() the number of values we have in our output

DENSE_RANK() the ranking of the values itself


RANK() and DENSE_RANK()
Window Functions in MySQL:

- They all require the use of the OVER clause

- The rank values they provide are always assigned sequentially

- The first rank is always equal to the integer 1, and the subsequent
rank values grow incrementally by 1, except for the duplicate records
potentially
RANK() and DENSE_RANK()
Window Functions in MySQL:

- RANK() and DENSE_RANK() are only useful when applied on ordered


partitions (=partitions defined by the use of the ORDER BY clause)

type: ORDER BY

ROW_NUMBER() non-order-sensitive not necessarily

RANK() more meaningful


order-sensitive
DENSE_RANK()
The LAG() and LEAD() Value Window Functions
The LAG() and LEAD() Value Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions

Ranking window functions Value window functions


The LAG() and LEAD() Value Window Functions

As opposed to ranking window functions, value window


functions return a value that can be found in the database

returns the value from a specified field of a record that


LAG() precedes the current row

= the value that lags the current value

SELECT
...,
LAG(column_name) OVER () AS ...
FROM
...;
The LAG() and LEAD() Value Window Functions

As opposed to ranking window functions, value window


functions return a value that can be found in the database

returns the value from a specified field of a record that


LEAD() follows the current row

= the value that leads the current value

SELECT
...,
LEAD(column_name) OVER () AS ...
FROM
...;
MySQL Aggregate Functions
in the Context of Window Functions
Aggregate Functions in the Context of Window Functions

MySQL aggregate functions in the context of window functions

≈ aggregate window functions


Aggregate Functions in the Context of Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions

Ranking window functions Value window functions


Aggregate Functions in the Context of Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions

Ranking window functions Value window functions


Aggregate Functions in the Context of Window Functions

MySQL Window Functions

Aggregate window functions Nonaggregate window functions


= window functions involving the
use of MySQL aggregate functions

Ranking window functions Value window functions

ROW_NUMBER() LAG()
RANK() LEAD()
DENSE_RANK()
Aggregate Functions in the Context of Window Functions

We must be very careful when utilizing aggregate functions

e.g. SUM() AVG()

Whether or not the aggregate functions will relate to the window function we
are implementing, depends entirely on the way we organize our data and on the
syntax we employ
Aggregate Functions in the Context of Window Functions
MySQL aggregate functions in
MySQL aggregate the context of window functions
functions (≈aggregate window functions)

Application of the groups of values data partitions


window function on:

Reference to: the values of a a window specification


certain column

MySQL clause: GROUP BY OVER PARTITION BY


WINDOW

Reduces the number of


records returned:

You might also like