mirror of
https://github.com/robindhole/fundamentals.git
synced 2025-09-13 22:12:12 +00:00
Adds notes.
This commit is contained in:
123
database/notes/08-window-functions-worksheet-answers.md
Normal file
123
database/notes/08-window-functions-worksheet-answers.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# Window functions worksheet
|
||||
|
||||
1. Print the student names along with the number of students in their batch.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
COUNT(*) OVER (PARTITION BY batch_id) AS batch_size
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
2. Print the student names along with the average IQ of their batch.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
AVG(iq) OVER (PARTITION BY batch_id) AS batch_avg_iq
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
3. Print the student names along with the maximum IQ of their batch.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
MAX(iq) OVER (PARTITION BY batch_id) AS batch_max_iq
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
4. Print the student names along with their rank based on IQ.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
RANK() OVER (ORDER BY iq) AS iq_rank
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
5. Print the student names along with their rank in their batch based on IQ.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
RANK() OVER (PARTITION BY batch_id ORDER BY iq) AS batch_iq_rank
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
6. Print the student names along with their rank in their batch based on IQ. Ties should not increase the rank.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
DENSE_RANK() OVER (PARTITION BY batch_id ORDER BY iq) AS batch_iq_rank
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
7. Print the student names along with their rank in their batch based on IQ. Ties should not be counted and broken by ID.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
batch_id,
|
||||
iq,
|
||||
ROW_NUMBER() OVER (PARTITION BY batch_id ORDER BY iq, id) AS batch_iq_rank
|
||||
FROM
|
||||
students;
|
||||
```
|
||||
|
||||
8. Find the rank of batches based on the start date of the batch.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
name,
|
||||
start_date,
|
||||
RANK() OVER (ORDER BY start_date) AS batch_rank
|
||||
FROM
|
||||
batches;
|
||||
```
|
||||
|
||||
9. Sort the instructors by the first and last name and assign them a roll number.
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
ROW_NUMBER() OVER (ORDER BY first_name, last_name) AS roll_number
|
||||
FROM
|
||||
instructors;
|
||||
```
|
Reference in New Issue
Block a user