-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSQLQuery50.sql
More file actions
37 lines (37 loc) · 1.09 KB
/
SQLQuery50.sql
File metadata and controls
37 lines (37 loc) · 1.09 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
;WITH
TotalOrders_CTE AS (
SELECT
Orders.CustomerID,
Customers.CompanyName,
SUM(OrderDetails.Quantity * OrderDetails.UnitPrice) AS TotalOrdersAmmount
FROM Customers
JOIN Orders
ON Orders.CustomerID = Customers.CustomerID
JOIN OrderDetails
ON OrderDetails.OrderID = Orders.OrderID
WHERE YEAR(Orders.OrderDate) = 2016
GROUP BY
Orders.CustomerID,
Customers.CompanyName
),
CustomerGroups_CTE AS (
SELECT
TotalOrders_CTE.CustomerID,
CustomerGroup =
CASE
WHEN TotalOrders_CTE.TotalOrdersAmmount < 1000 THEN 'Low'
WHEN (TotalOrders_CTE.TotalOrdersAmmount > 1000 AND TotalOrders_CTE.TotalOrdersAmmount < 5000) THEN 'Medium'
WHEN (TotalOrders_CTE.TotalOrdersAmmount > 5000 AND TotalOrders_CTE.TotalOrdersAmmount < 10000) THEN 'High'
ELSE 'Very High'
END
FROM TotalOrders_CTE
)
SELECT
CustomerGroups_CTE.CustomerGroup,
COUNT(*) AS TotalInGroup,
COUNT(*)*1.0/(SELECT COUNT(*) FROM CustomerGroups_CTE) AS PercentageInGroup
FROM CustomerGroups_CTE
JOIN TotalOrders_CTE
ON TotalOrders_CTE.CustomerID = CustomerGroups_CTE.CustomerID
GROUP BY CustomerGroups_CTE.CustomerGroup
ORDER BY TotalInGroup DESC;