Course Content
Advanced Techniques in SQL
Advanced Techniques in SQL
Challenge: Using Window Function
Let's consider the bank_accounts
table we have used in the previous sections:
Let's assume we want to add information to the table about which class each user belongs to based on their account balance.
The classes will be determined as follows:
- A person whose account balance is in the bottom
25%
will belong to the forth class; - A person whose account balance is between
25%
and50%
will belong to the third class; - A person whose account balance is between
50%
and75%
will belong to the second class; - A person whose account balance is in the top
25%
will belong to the first class.
To solve this problem, we can use a window function called NTILE()
.
The NTILE()
function is a window function that divides the rows in an ordered partition into a specified number of roughly equal groups, or "tiles".
It assigns each row a group number, starting at 1
, based on the group it falls into.
Note
In the example, we don't need to specify a
PARTITION BY
clause because we want to apply theNTILE()
function to the entire result set, not to specific subsets or partitions of the data.
TheORDER BY
clause is sufficient as it defines the order in which the rows are distributed into tiles, ensuring that the grouping is based on the sorted order of the salaries across the entire table.
If we wanted to calculate tiles within specific groups (e.g., departments), we would usePARTITION BY
.
Swipe to show code editor
Your task is to apply NTILE()
function to get indormation about class of each account holder.
You have to:
- Specify number of classes as the argument of the function.
- Provide ordering by account balance to determine class.
- As we assume, that the first class is the class with the highest balance and so on, we have to order balances in descending order.
Thanks for your feedback!
Challenge: Using Window Function
Let's consider the bank_accounts
table we have used in the previous sections:
Let's assume we want to add information to the table about which class each user belongs to based on their account balance.
The classes will be determined as follows:
- A person whose account balance is in the bottom
25%
will belong to the forth class; - A person whose account balance is between
25%
and50%
will belong to the third class; - A person whose account balance is between
50%
and75%
will belong to the second class; - A person whose account balance is in the top
25%
will belong to the first class.
To solve this problem, we can use a window function called NTILE()
.
The NTILE()
function is a window function that divides the rows in an ordered partition into a specified number of roughly equal groups, or "tiles".
It assigns each row a group number, starting at 1
, based on the group it falls into.
Note
In the example, we don't need to specify a
PARTITION BY
clause because we want to apply theNTILE()
function to the entire result set, not to specific subsets or partitions of the data.
TheORDER BY
clause is sufficient as it defines the order in which the rows are distributed into tiles, ensuring that the grouping is based on the sorted order of the salaries across the entire table.
If we wanted to calculate tiles within specific groups (e.g., departments), we would usePARTITION BY
.
Swipe to show code editor
Your task is to apply NTILE()
function to get indormation about class of each account holder.
You have to:
- Specify number of classes as the argument of the function.
- Provide ordering by account balance to determine class.
- As we assume, that the first class is the class with the highest balance and so on, we have to order balances in descending order.
Thanks for your feedback!