-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOrders-Analysis_Code.sql
More file actions
107 lines (100 loc) · 2.1 KB
/
Orders-Analysis_Code.sql
File metadata and controls
107 lines (100 loc) · 2.1 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
SELECT *
FROM dbo.df_orders;
--find top 10 highest reveue generating products
SELECT TOP 10 product_id
, sum(sale_price) AS sales
FROM df_orders
GROUP BY product_id
ORDER BY sales DESC;
--find top 5 highest selling products in each region
WITH cte
AS (
SELECT region
, product_id
, sum(sale_price) AS sales
FROM df_orders
GROUP BY region
, product_id
)
SELECT *
FROM (
SELECT *
, row_number() OVER (
PARTITION BY region ORDER BY sales DESC
) AS rn
FROM cte
) A
WHERE rn <= 5
--find month over month growth comparison for 2022 and 2023 sales eg : jan 2022 vs jan 2023
WITH cte AS (
SELECT year(order_date) AS order_year
, month(order_date) AS order_month
, sum(sale_price) AS sales
FROM df_orders
GROUP BY year(order_date)
, month(order_date)
)
--order by year(order_date),month(order_date)
SELECT order_month
, sum(CASE
WHEN order_year = 2022
THEN sales
ELSE 0
END) AS sales_2022
, sum(CASE
WHEN order_year = 2023
THEN sales
ELSE 0
END) AS sales_2023
FROM cte
GROUP BY order_month
ORDER BY order_month;
--for each category which month had highest sales
WITH cte
AS (
SELECT category
, format(order_date, 'yyyyMM') AS order_year_month
, sum(sale_price) AS sales
FROM df_orders
GROUP BY category
, format(order_date, 'yyyyMM')
--order by category,format(order_date,'yyyyMM')
)
SELECT *
FROM (
SELECT *
, row_number() OVER (
PARTITION BY category ORDER BY sales DESC
) AS rn
FROM cte
) a
WHERE rn = 1;
--which sub category had highest growth by profit in 2023 compare to 2022
WITH cte AS (
SELECT sub_category
, year(order_date) AS order_year
, sum(sale_price) AS sales
FROM df_orders
GROUP BY sub_category
, year(order_date)
--order by year(order_date),month(order_date)
)
, cte2 AS (
SELECT sub_category
, sum(CASE
WHEN order_year = 2022
THEN sales
ELSE 0
END) AS sales_2022
, sum(CASE
WHEN order_year = 2023
THEN sales
ELSE 0
END) AS sales_2023
FROM cte
GROUP BY sub_category
)
SELECT TOP 1 *
, (sales_2023 - sales_2022)
FROM cte2
ORDER BY (sales_2023 - sales_2022) DESC;