cs348/Project_1/answer.sql

111 lines
3.2 KiB
MySQL
Raw Normal View History

2018-10-29 15:52:17 -04:00
-- Query1
SELECT Category, COUNT(ProductId) AS NumberOfProducts
FROM Product
GROUP BY Category;
-- Query2
SELECT Category, TO_CHAR(AVG(ExFactoryPrice), '99999999990.00') AS AveragePrice
FROM Product
GROUP BY Category
ORDER BY AveragePrice DESC;
-- Query3
SELECT ProductId, ProductName
FROM Product P, Company C
WHERE P.CompanyId = C.CompanyId AND (C.State = 'CA' OR C.State = 'IN')
ORDER BY ProductId ASC;
-- Query4
SELECT RI.RetailerId, O.ProductId, (SUM(Count) - RI.TotalStock) AS PrepareNumber
FROM Orders O, RetailerInventory RI
WHERE O.RetailerId = RI.RetailerId AND O.ProductId = RI.ProductId AND O.Status = 'PENDDING'
GROUP BY RI.RetailerId, O.ProductId, RI.TotalStock -- Check this GROUP BY
ORDER BY RI.RetailerId ASC;
-- Query5
SELECT ProductName, NumberOfItemsSold
FROM (
SELECT P.ProductName, NumberOfItemsSold, RANK()
OVER (ORDER BY NumberOfItemsSold DESC) AS Score
FROM (
SELECT ProductId, SUM(Count) AS NumberOfItemsSold
FROM Orders
GROUP BY ProductId
) S, Product P
WHERE S.ProductId = P.ProductId
)
WHERE Score <= 3
ORDER BY NumberOfItemsSold DESC;
-- Query6
SELECT FirstName, LastName, TO_CHAR(ROUND(TotalAmount, 2), '99999999990.00')
FROM (
SELECT CustomerId, TotalAmount, RANK()
OVER (ORDER BY TotalAmount DESC) AS Score
FROM (
SELECT CustomerId, SUM(Count * UnitPrice) AS TotalAmount
FROM Orders
GROUP BY CustomerId
)
) T, Customer C
WHERE Score <= 3 AND C.CustomerId = T.CustomerId
ORDER BY TotalAmount DESC;
-- Query7
SELECT O.RetailerId, R.RetailerName, O.NumberOfOrders
FROM (
SELECT RetailerId, NumberOfOrders, RANK()
OVER (ORDER BY NumberOfOrders DESC) AS Score
FROM (
SELECT RetailerId, COUNT(OrderId) AS NumberOfOrders
FROM Orders
GROUP BY RetailerId
)
) O, Retailer R
WHERE O.Score <= 2 AND R.RetailerId = O.RetailerId
ORDER BY O.NumberOfOrders DESC;
-- Query8
SELECT P.RetailerId, R.RetailerName, TO_CHAR(ROUND(P.NetProfit, 2), '99999999990.00')
FROM (
SELECT RetailerId, NetProfit, RANK()
OVER (ORDER BY NetProfit DESC) AS Score
FROM (
SELECT RetailerId, SUM(Count * (UnitPrice - ExFactoryPrice)) AS NetProfit
FROM Orders O, Product P
WHERE P.ProductId = O.ProductId
GROUP BY O.RetailerId
)
) P, Retailer R
WHERE P.Score <= 2 AND P.RetailerId = R.RetailerId
ORDER BY NetProfit DESC;
-- Query9
SELECT T.CompanyId, C.CompanyName, T.TotalCount
FROM (
SELECT CompanyId, TotalCount, RANK()
OVER (ORDER BY TotalCount DESC) AS Score
FROM (
SELECT P.CompanyId, SUM(O.Count) AS TotalCount
FROM Product P, Orders O
WHERE P.ProductId = O.ProductId
GROUP BY P.CompanyId
)
) T, Company C
WHERE T.Score <= 3 AND T.CompanyId = C.CompanyId
ORDER BY TotalCount DESC;
-- Query10
SELECT D.RetailerId, R.RetailerName, NumberOfDistinctCustomers
FROM (
SELECT RetailerId, NumberOfDistinctCustomers, RANK()
OVER (ORDER BY NumberOfDistinctCustomers DESC) AS Score
FROM (
SELECT RetailerId, COUNT(DISTINCT CustomerId) AS NumberOfDistinctCustomers
FROM Orders
GROUP BY RetailerId
)
) D, Retailer R
WHERE D.Score <= 2 AND D.RetailerId = R.RetailerId
ORDER BY NumberOfDistinctCustomers DESC;