I use the Northwind database to update my SQL skills by creating several more or less complex queries. Unfortunately, I could not find a solution for my last use case: "Get the sum of the five highest orders for each category in 1997."
Used tables:
Orders(OrderId, OrderDate) Order Details(OrderId, ProductId, Quantity, UnitPrice) Products(ProductId, CategoryId) Categories(CategoryId, CategoryName)
I tried the following query
SELECT c.CategoryName, SUM( (SELECT TOP 5 od2.UnitPrice*od2.Quantity FROM [Order Details] od2, Products p2 WHERE od2.ProductID = p2.ProductID AND c.CategoryID = p2.CategoryID ORDER BY 1 DESC)) FROM [Order Details] od, Products p, Categories c, Orders o WHERE od.ProductID = p. ProductID AND p.CategoryID = c.CategoryID AND od.OrderID = o.OrderID AND YEAR(o.OrderDate) = 1997 GROUP BY c.CategoryName
Well ... It turned out that subqueries are not allowed in aggregate functions. I read other posts about this problem, but could not find a solution for my specific use case. I hope you help me ...
Thomas
source share