-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsql project.sql
More file actions
198 lines (155 loc) · 3.36 KB
/
sql project.sql
File metadata and controls
198 lines (155 loc) · 3.36 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
DROP TABLE IF EXISTS retail_sales;
CREATE TABLE retail_sales(
transactions_id INT PRIMARY KEY ,
sale_date DATE ,
sale_time TIME,
customer_id INT,
gender VARCHAR(15),
age INT,
catogery VARCHAR(15),
quantiy INT,
price_per_unit FLOAT,
cogs FLOAT,
total_sale FLOAT
);
SELECT * FROM retail_sales
LIMIT 10
SELECT
COUNT(*)
FROM retail_sales
--DATA CLEANING--
SELECT * FROM retail_sales
WHERE
transactions_id IS NULL
OR
sale_date IS NULL
OR
sale_time IS NULL
OR
customer_id IS NULL
OR
gender IS NULL
OR
age IS NULL
OR
catogery IS NULL
OR
quantiy IS NULL
OR
price_per_unit IS NULL
OR
cogs IS NULL
OR
total_sale IS NULL;
DELETE FROM retail_sales
WHERE
transactions_id IS NULL
OR
sale_date IS NULL
OR
sale_time IS NULL
OR
customer_id IS NULL
OR
gender IS NULL
OR
age IS NULL
OR
catogery IS NULL
OR
quantiy IS NULL
OR
price_per_unit IS NULL
OR
cogs IS NULL
OR
total_sale IS NULL;
--DATA EXPLORATATION--
--how much items sold--
SELECT COUNT(*) AS total_sale FROM retail_sales
-- How many customer we have--
SELECT COUNT(customer_id) AS total_sale FROM retail_sales
-- how many unique customer--
SELECT COUNT(DISTINCT customer_id) AS total_sale FROM retail_sales
--how many catogery--
SELECT DISTINCT catogery FROM retail_sales
--DATA ANALYSIS AND BUSINESS KEY PROBLEM--
--SQL QUERY TO FIND ALL COLUMNS FOR SALES MADE ON "2022-11-05"
SELECT *
FROM retail_sales
WHERE sale_date = '2022-11-05';
-- SQL QUERY TO FIND ALL TRANSACTIONS WHERE THE CATOGERY IS CLOTHING AND SOLD MORE THAN 10 IN NOV 2022--
SELECT
*
FROM retail_sales
WHERE
catogery = 'Clothing'
AND
TO_CHAR(sale_date ,'YYYY-MM') = '2022-11'
AND
quantiy >= 4
--calculate total sales from each category --
SELECT catogery ,
SUM(total_sale) as net_sale,
COUNT (*) as total_orders
FROM retail_sales
GROUP BY 1
--average age of customer who buy from beauty category --
SELECT
ROUND(AVG(age)) as avg_age
FROM retail_sales
WHERE catogery = 'Beauty'
--find all transactions where total sale is greatwe than 1000--
SELECT * FROM retail_sales
WHERE total_sale >1000
-- find the total number transactions(transactions_id) made by each gender in each catogery
SELECT
catogery ,
gender ,
COUNT (*) AS total_trans
FROM retail_sales
GROUP
BY
catogery ,
gender
ORDER BY 1
--CALCULATE THE AVERAGE SALE OF EACH MONTH AND BEST SELLING MONTH IN YEAR --
SELECT
EXTRACT(YEAR FROM sale_date ) as year,
EXTRACT(MONTH FROM sale_date ) as year ,
ROUND(AVG(total_sale)) as avg_sale
FROM retail_sales
GROUP BY 1,2
ORDER BY 1,3 DESC
--FIND THE TOP5 CUSTOMERS BASED ON THE HIGHEST TOTAL SALES --
SELECT
customer_id ,
SUM(total_sale) as total_sales
FROM retail_sales
GROUP BY 1
ORDER BY 2 DESC
LIMIT 5
--FIND THE NUMBER OF UNIQUE CUSTOMERS WHO PURCHASED ITEMS FROM EACH CATOGERY --
SELECT
catogery,
COUNT (DISTINCT customer_id)
FROM retail_sales
GROUP BY catogery
-- CREATE EACH SHIFT CATOGERY AND NUMBER OF ORDER --
WITH hourly_sale
AS
(
SELECT *,
CASE
WHEN EXTRACT(HOUR FROM sale_time)<12 THEN 'Morning'
WHEN EXTRACT(HOUR FROM sale_time) BETWEEN 12 AND 17 THEN 'Afternoon'
ELSE 'Evening'
END AS shift
FROM retail_sales
)
SELECT
shift,
COUNT(*) AS total_orders
FROM hourly_sale
GROUP BY shift
--END OF PROJECT --