Icon Créer jeu Créer jeu

Mastering SQL Window Functions

Compléter

Drills to master window functions in SQL

Téléchargez la version pour jouer sur papier

0 fois fait

Créé par

United States

Top 10 résultats

Il n'y a toujours pas de résultats pour ce jeu. Soyez le premier à apparaître dans le classement! pour vous identifier.
Créez votre propre jeu gratuite à partir de notre créateur de jeu
Affrontez vos amis pour voir qui obtient le meilleur score dans ce jeu

Top Jeux

  1. temps
    but
  1. temps
    but
temps
but
temps
but
 
game-icon

Compléter

Mastering SQL Window FunctionsVersion en ligne

Drills to master window functions in SQL

par Good Sam
1

SUM sale_date ORDER amount sales SELECT BY AS amount FROM OVER running_total sale_date

Problem 1 : Calculate Running Total
Question : You have a table sales ( sale_date DATE , amount DECIMAL ) . Write a SQL query to calculate a running total of amount , ordered by sale_date .

Solution :

, ,
( ) ( )
;

2

AND as SELECT BY amount OVER moving_avg PRECEDING sum_to_end sale_date FROM OVER SUM sales ROW amount UNBOUNDED FROM ROWS sales sale_date AVG OVER sale_date PRECEDING AND ROWS BETWEEN sales amount amount current_avg BETWEEN ROWS ROWS sale_date FOLLOWING amount ROWS FROM SELECT FROM CURRENT sales OVER sale_date AVG OVER ROW AVG sale_date BY sale_date FROM FOLLOWING as AND as CURRENT ORDER 3 3 ORDER AND BETWEEN CURRENT amount BY moving_avg as BETWEEN sale_date BY ROW PRECEDING SELECT amount ROW sale_date BY BETWEEN amount running_total ORDER SUM ROW ORDER sales CURRENT AND ORDER SELECT UNBOUNDED CURRENT as amount 6

Problem 2 : Calculate Moving Average
Question : Calculate a 7 - day moving average of sales from the sales table .

Solution :

, ,
( ) ( )
;

Example 2 : Fixed Range with Both PRECEDING and FOLLOWING

, ,
( ) ( )
;

This calculates the average amount using a window that includes three rows before , the current row , and three rows after the current row .

Example 3 : From Start of Data to Current Row
, ,
( ) ( )
;

This query computes a running total starting from the first row in the partition or result set up to the current row .

Example 4 : Current Row to End of Data
SELECT sale_date , amount ,
( ) ( )
;

This sums the amount from the current row to the last row of the partition or result set .

Example 5 : Current Row Only
, ,
( ) ( )
;

This calculates the average of just the current row's amount , which effectively returns the amount itself .

3

rank id OVER RANK SELECT ORDER customers AS total_purchases total_purchases name BY FROM DESC

Problem 3 : Rank Customers by Sales

Question : From a table customers ( id INT , name VARCHAR , total_purchases DECIMAL ) , rank customers based on their total_purchases in descending order .

Solution :

, , ,
( ) ( )
;
Explanation : RANK ( ) assigns a unique rank to each row , with gaps in the ranking for ties , based on the total_purchases in descending order .

4

SELECT ORDER amount ROW_NUMBER() OVER FROM sale_date row_num sales BY AS sale_date

Problem 4 : Row Numbering

Question : Assign a unique row number to each sale in the sales table ordered by sale_date .

Solution :

, ,
( )
;

Explanation : ROW_NUMBER ( ) generates a unique number for each row , starting at 1 , based on the ordering of sale_date .

5

first_purchase MIN AS purchases PARTITION OVER FROM customer_id purchase_date SELECT customer_id BY

Problem 5 : Find the First Purchase Date for Each Customer
Question : Given a table purchases ( customer_id INT , purchase_date DATE ) , write a SQL query to find the first purchase date for each customer .

Solution :

, ( ) ( )
;

Explanation : MIN ( ) window function is used here , partitioned by customer_id so that the minimum purchase date is calculated for each customer separately .

6

ORDER OVER amount change_in_amount AS amount amount LAG amount AS BY OVER BY FROM 1 sale_date LAG ORDER sales_data sale_date sale_date 1 SELECT previous_day_amount

The LAG function is very useful in scenarios where you need to compare successive entries or calculate differences between them . For example , calculating day - over - day sales changes :


SELECT sale_date ,
amount ,
LAG ( amount , 1 ) OVER ( ORDER BY sale_date ) AS previous_day_amount ,
amount - LAG ( amount , 1 ) OVER ( ORDER BY sale_date ) AS change_in_amount
FROM sales_data ;



,
,
( , ) ( ) ,
- ( , ) ( )
;

In this query , the change_in_amount field computes the difference in sales between consecutive days . If the LAG function references a row that doesn't exist ( e . g . , the first row in the dataset ) , it will return NULL unless a default value is specified .


The LAG window function in SQL is used to access data from a previous row in the same result set without the need for a self - join . It's a part of the SQL window functions that provide the ability to perform calculations across rows that are related to the current row . LAG is particularly useful for comparisons between records in ordered data .

How LAG Works :
LAG takes up to three arguments :

Expression : The column or expression you want to retrieve from a preceding row .
Offset : An optional integer specifying how many rows back from the current row the function should look . If not specified , the default is 1 , meaning the immediate previous row .
Default : An optional argument that provides a default value to return if the LAG function attempts to go beyond the first row of the dataset .
Syntax :
LAG ( expression , offset , default ) OVER ( [ PARTITION BY partition_expression ] ORDER BY sort_expression )