[Orders] : OrderID(Primary Key), CustomerID
[Order Details] : OrderID(Primary Key), ProductID(Primary Key), Discount
[Customers] : CustomerID[Primary Key]
使用这三个表格,我想查询每个productID
的最高折扣CustomerID
。我需要ProductID
,CustomerID
和Discount
的列。我怎么解决这个问题?真的很感激各种帮助。
我已尝试过以下脚本:
select ProductID, a.customerID,
(select MAX(discount)
from [Order Details]
where a.CustomerID=c.customerID
)
from Orders a
join [Order Details]
on a.OrderID=[Order Details].OrderID
join Customers c
on a.CustomerID=c.CustomerID
order by customerID
答案 0 :(得分:0)
以下查询将以最大折扣为每位客户返回productid。请注意,如果针对特定客户,您有多个可能具有最高折扣的产品,我想要退回,那么您需要将ROW_NUMBER()
替换为DENSE_RANK()
WITH CTE AS
(SELECT ProductID,
o.CustomerID,
Discount,
ROW_NUMBER() OVER(PARTITION BY o.CustomerID ORDER BY Discount DESC) Row_num
FROM [Order Details] od INNER JOIN Orders o
ON od.OrderID= o.OrderID
)
SELECT ProductID,
CustomerID,
Discount
FROM CTE
WHERE Row_num = 1