我想在sql中按价格对卖家进行分组,假设我在下面有表格数据。我想首先按价格订购,但是当卖家在桌子中存在多个时间时,应该在下面。(意思是同一个卖家)。
表数据
SellerID SellerName Price
88 FlipKart 3950
32 eBay 4139
153 Amazon 4139
96 Walmart 4388
88 FlipKart 5999
153 Amazon 4464
要求:
SellerID SellerName Price
88 FlipKart 3950
88 FlipKart 5999
32 eBay 4139
153 Amazon 4139
153 Amazon 4464
96 Walmart 4388
以下代码未给出预期结果。
SELECT SellerID, SellerName, Price
FROM TableName
ORDER BY Price, SellerID
答案 0 :(得分:4)
您可以使用窗口函数MIN(..) OVER..
获取每个SellerName
的最低价格并按其排序。
SELECT SellerID,
SellerName,
Price
FROM TableName
ORDER BY MIN(Price) OVER (PARTITION BY SellerID),
SellerID
答案 1 :(得分:0)
试试这个:
;with cte as
(select *, min(price) over (partition by sellerid order by sellerid) mp
from tablename),
select sellerid, sellername, price
from cte
order by mp, sellerid
演示here。