-
Notifications
You must be signed in to change notification settings - Fork 0
/
samples_scenarios.sql
157 lines (156 loc) · 5.12 KB
/
samples_scenarios.sql
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
#Sample 1:
SELECT 'Customers' AS 'Table', COUNT(*) AS Num_Rows FROM customers
UNION
SELECT 'Employees' AS 'Table', COUNT(*) AS Num_Rows FROM employees
UNION
SELECT 'Offices' AS 'Table', COUNT(*) AS Num_Rows FROM offices
UNION
SELECT 'Order Details' AS 'Table', COUNT(*) AS Num_Rows FROM orderdetails
UNION
SELECT 'Orders' AS 'Table', COUNT(*) AS Num_Rows FROM orders
UNION
SELECT 'Payments' AS 'Table', COUNT(*) AS Num_Rows FROM payments
UNION
SELECT 'Product Lines' AS 'Table', COUNT(*) AS Num_Rows FROM productlines
UNION
SELECT 'Products' AS 'Table', COUNT(*) AS Num_Rows FROM products;
#Sample 2:
SELECT customerName,
contactLastName,
contactFirstname,
city,
state,
SUM(quantityOrdered*priceEach) AS totalSpent,
MAX(orderDate) AS LastOrder
FROM orderdetails JOIN
orders USING (orderNumber) JOIN
customers USING (customerNumber)
GROUP BY customerNumber
ORDER BY totalSpent DESC;
#Sample 3:
SELECT salesRepEmployeeNumber,
employees.lastName,
employees.firstName,
employees.email,
SUM(quantityOrdered*priceEach) AS totalSales
FROM orderdetails JOIN orders USING (orderNumber)
JOIN customers USING (customerNumber)
JOIN employees ON
customers.salesRepEmployeeNumber = employees.employeeNumber
GROUP BY salesRepEmployeeNumber
ORDER BY totalSales DESC;
#Sample 4:
SELECT officeCode,
CONCAT(
COALESCE(CONCAT(o.addressLine2,' - '), ''),
COALESCE(CONCAT(o.addressLine1, ', '), ''),
COALESCE(CONCAT(o.city), ''),
COALESCE(CONCAT(', ', o.state), ''),
COALESCE(CONCAT(', ', o.country), '')
) AS Address,
o.phone,
SUM(quantityOrdered*priceEach) AS totalSales
FROM orderdetails JOIN orders USING (orderNumber)
JOIN customers USING (customerNumber)
JOIN employees ON
customers.salesRepEmployeeNumber = employees.employeeNumber
JOIN offices o USING (officeCode)
GROUP BY officeCode
ORDER BY SUM(quantityOrdered*priceEach) DESC;
#Sample 5:
SELECT IF (quantityOrdered < 35.2190, 'few', 'many') AS few_many,
AVG(priceEach) AS avg_price
FROM orderdetails
GROUP BY few_many;
#Sample 6:
SELECT MONTH(ord.orderDate),
SUM(quantityOrdered) AS TotalQuantityOrdered
FROM (
SELECT orderNumber,
orderDate,
quantityOrdered
FROM orders
JOIN orderdetails USING (orderNumber)
) AS ord
GROUP BY MONTH(ord.orderDate)
ORDER BY TotalQuantityOrdered DESC;
#Sample 7:
SELECT COUNT(*) numOrders,
YEAR(orderDate) AS orderYear
FROM orders
GROUP BY orderYear;
#Sample 8:
SELECT MONTH(orderDate) AS Month,
COUNT(*) AS Orders
FROM orders
GROUP BY Month
ORDER BY Orders DESC;
#Sample 9:
SELECT YEAR(paymentDate) AS paymentYear,
FORMAT(SUM(amount), 2) AS totalPaymentsReceived
FROM payments
GROUP BY paymentYear
ORDER BY paymentYear;
#Sample 10:
SELECT productLine,
SUM(quantityOrdered*priceEach) AS TotalSalesVolume
FROM productlines
JOIN products USING (productLine)
JOIN orderdetails USING (productCode)
GROUP BY productLine
ORDER BY TotalSalesVolume DESC;
#Sample 11:
SELECT productLine,
SUM(quantityInStock) AS TotalQuantityInStock
FROM productlines
JOIN products USING (productLine)
GROUP BY productLine
ORDER BY TotalQuantityInStock DESC;
#Sample 12:
SELECT prod.productLine,
prod.productCode,
prod.productName,
prod.totalQtySold,
RANK() OVER (PARTITION BY productLine ORDER BY totalQtySold DESC) AS totalQtySold_rank
FROM (
SELECT productLine,
productCode,
productName,
SUM(quantityOrdered) AS totalQtySold
FROM orderdetails JOIN products USING (productCode)
GROUP BY productCode
ORDER BY totalQtySold DESC
) AS prod
ORDER BY totalQtySold_rank, productLine;
#Sample 13:
SELECT productCode,
productName,
SUM(quantityOrdered*priceEach) AS totalRevenueFromProduct,
SUM(quantityOrdered) AS totalQuantitySold
FROM orderdetails JOIN products USING (productCode)
GROUP BY productCode
ORDER BY totalRevenueFromProduct DESC;
#Sample 14:
SELECT productCode,
productName,
quantityInStock,
SUM(quantityOrdered*priceEach) AS totalSales
FROM products JOIN
orderdetails USING (productCode)
GROUP BY productCode
ORDER BY quantityInStock DESC;
#Sample 15:
SELECT prod.productCode,
prod.productName,
prod.TotalSales,
PERCENT_RANK() OVER (ORDER BY TotalSales DESC) AS TotalSales_percent_rank,
CUME_DIST() OVER (ORDER BY TotalSales DESC) AS TotalSales_cume_dist
FROM (
SELECT productCode,
productName,
SUM(quantityOrdered*priceEach) AS TotalSales
FROM products
JOIN orderdetails USING (productCode)
GROUP BY productCode
ORDER BY TotalSales DESC
) AS prod;