-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProject3_SQL_Script_SSMS_Abimbola.sql
More file actions
169 lines (152 loc) · 5.02 KB
/
Copy pathProject3_SQL_Script_SSMS_Abimbola.sql
File metadata and controls
169 lines (152 loc) · 5.02 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
-- =====================================================
-- PROJECT 3: SQL DATA ANALYSIS
-- Industrial Training Kit | DecodeLabs 2026
-- Analyst: Abimbola Oladapo
-- Dataset: E-Commerce Orders (1,200 records)
-- Tool: SQL Server Management Studio (SSMS) / T-SQL
-- =====================================================
-- =====================================================
-- STEP 1: CREATE THE TABLE
-- Run this first before importing your data
-- =====================================================
CREATE TABLE Orders (
OrderID VARCHAR(20),
Date DATE,
CustomerID VARCHAR(20),
Product VARCHAR(50),
Quantity INT,
UnitPrice DECIMAL(10,2),
ShippingAddress VARCHAR(100),
PaymentMethod VARCHAR(50),
OrderStatus VARCHAR(50),
TrackingNumber VARCHAR(50),
ItemsInCart INT,
CouponCode VARCHAR(20),
ReferralSource VARCHAR(50),
TotalPrice DECIMAL(10,2)
);
-- =====================================================
-- Q1: SELECT — View a Sample of All Orders
-- NOTE: SQL Server uses TOP instead of LIMIT
-- =====================================================
USE Decodelabs_Abimbola_Project;
GO
SELECT TOP 10
OrderID,
Date,
CustomerID,
Product,
Quantity,
UnitPrice,
TotalPrice,
OrderStatus
FROM dbo.Orders;
-- =====================================================
-- Q2: WHERE — Filter Orders by Status = 'Delivered'
-- =====================================================
SELECT
OrderID,
CustomerID,
Product,
TotalPrice,
OrderStatus
FROM dbo.Orders
WHERE OrderStatus = 'Delivered'
ORDER BY TotalPrice DESC;
-- =====================================================
-- Q3: WHERE — High-Value Orders (TotalPrice > 2000)
-- =====================================================
SELECT
OrderID,
CustomerID,
Product,
Quantity,
TotalPrice,
OrderStatus
FROM dbo.Orders
WHERE TotalPrice > 2000
ORDER BY TotalPrice DESC;
-- =====================================================
-- Q4: WHERE — All Laptop Orders
-- =====================================================
SELECT
OrderID,
CustomerID,
Quantity,
UnitPrice,
TotalPrice,
OrderStatus,
PaymentMethod
FROM dbo.Orders
WHERE Product = 'Laptop'
ORDER BY TotalPrice DESC;
-- =====================================================
-- Q5: GROUP BY — Count, Revenue & Avg per Product
-- NOTE: SQL Server uses ROUND(value, 2) same as SQLite
-- =====================================================
SELECT
Product,
COUNT(*) AS Total_Orders,
ROUND(SUM(TotalPrice), 2) AS Total_Revenue,
ROUND(AVG(TotalPrice), 2) AS Avg_Order_Value
FROM dbo.Orders
GROUP BY Product
ORDER BY Total_Revenue DESC;
-- =====================================================
-- Q6: GROUP BY — Orders & Revenue by Status
-- =====================================================
SELECT
OrderStatus,
COUNT(*) AS Number_of_Orders,
ROUND(SUM(TotalPrice), 2) AS Total_Revenue,
ROUND(AVG(TotalPrice), 2) AS Avg_Order_Value
FROM dbo.Orders
GROUP BY OrderStatus
ORDER BY Number_of_Orders DESC;
-- =====================================================
-- Q7: GROUP BY — Revenue by Payment Method
-- =====================================================
SELECT
PaymentMethod,
COUNT(*) AS Total_Orders,
ROUND(SUM(TotalPrice), 2) AS Total_Revenue
FROM dbo.Orders
GROUP BY PaymentMethod
ORDER BY Total_Revenue DESC;
-- =====================================================
-- Q8: GROUP BY — Orders by Referral Source
-- =====================================================
SELECT
ReferralSource,
COUNT(*) AS Total_Orders,
ROUND(SUM(TotalPrice), 2) AS Total_Revenue,
ROUND(AVG(TotalPrice), 2) AS Avg_Order_Value
FROM dbo.Orders
GROUP BY ReferralSource
ORDER BY Total_Orders DESC;
-- =====================================================
-- Q9: WHERE + GROUP BY — Cancelled/Returned by Product
-- =====================================================
SELECT
Product,
COUNT(*) AS Bad_Orders,
ROUND(SUM(TotalPrice), 2) AS Lost_Revenue
FROM dbo.Orders
WHERE OrderStatus IN ('Cancelled', 'Returned')
GROUP BY Product
ORDER BY Lost_Revenue DESC;
-- =====================================================
-- Q10: AGGREGATION — Overall Business Summary
-- NOTE: SQL Server uses COUNT(DISTINCT col) same way
-- =====================================================
SELECT
COUNT(*) AS Total_Orders,
COUNT(DISTINCT CustomerID) AS Unique_Customers,
ROUND(SUM(TotalPrice), 2) AS Total_Revenue,
ROUND(AVG(TotalPrice), 2) AS Avg_Order_Value,
ROUND(MAX(TotalPrice), 2) AS Highest_Order,
ROUND(MIN(TotalPrice), 2) AS Lowest_Order
FROM dbo.Orders;
-- =====================================================
-- END OF PROJECT 3 — SQL SERVER VERSION
-- =====================================================