-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathWindow Functions.txt
More file actions
43 lines (34 loc) · 1.54 KB
/
Copy pathWindow Functions.txt
File metadata and controls
43 lines (34 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- Create a new table named sales_data
create table sales_data (
product varchar(5),
sale_date date,
total_sales int,
primary key(product, sale_date, total_sales)
);
-- Insert data into the sales_data table
insert into sales_data values
('X', '2022-03-01', 200),
('Y', '2022-03-01', 150),
('X', '2022-04-01', 300),
('Y', '2022-04-01', 250),
('X', '2022-05-01', 180),
('Y', '2022-05-01', 200),
('X', '2022-06-01', 400),
('Y', '2022-06-01', 350);
-- Display the data in the sales_data table
select * from sales_data;
-- Use lag() and lead() to get previous and next sales values within each product partition
select product, sale_date, total_sales,
lag(total_sales, 1, 0) over (partition by product order by sale_date) as prev_sales,
lead(total_sales, 1, 0) over (partition by product order by sale_date) as next_sales
from sales_data;
-- Calculate the difference between current sales and previous sales
select product, sale_date, total_sales,
lag(total_sales, 1, 0) over (partition by product order by sale_date) as prev_sales,
total_sales - lag(total_sales, 1, 0) over (partition by product order by sale_date) as diff
from sales_data;
-- Calculate the percent difference between current sales and previous sales
select product, sale_date, total_sales,
lag(total_sales, 1, 0) over (partition by product order by sale_date) as prev_sales,
(total_sales - lag(total_sales, 1, 0) over (partition by product order by sale_date)) / lag(total_sales, 1, 0) over (partition by product order by sale_date) as percent_diff
from sales_data;