簡體   English   中英

Sql Query使用group子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM