[英]Sql Query using group clause
這是我的table
的SQL Server的快照。
我想寫一個sql
query
,它只返回3行,包含3個不同類別的最大報價。 在我的結果中應該有3個不同的類別ID,並且與該類別的商品的通信應該是該類別中的最大商品
這是我想要的輸出
正如您所看到的那樣,有3種不同的類別,屬於該類別的商品屬於該類別的最大類別
看到
如果您只想要類別和最大值:
SELECT TOP 3 Cat_Id, MAX(Offer) FROM Products GROUP BY Cat_Id
但是如果你還想要其他字段,你必須使用秩函數 :
SELECT TOP 3 * FROM
(SELECT ROW_NUMBER() OVER(PARTITION BY Cat_Id ORDER BY Offer DESC) AS RowNumber,
Cat_Id, Offer, Name, Model
FROM Products) AS T
WHERE RowNumber=1
您的查詢有兩種不同的方法:
select * from (
select *, dense_rank() over( order by ct desc) t from (
select *, max(Offer) over (partition by cat_id) ct from Products
) o)o2 where t<3
要么
select * from Products s inner join (
select top 3 Cat_id, max(Offer) max_offer from Products
group by Cat_id
order by max_offer desc) o on o.Cat_id=s.Cat_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.