這是我的table
sql server的快照。使用組子句的Sql查詢
我想寫一個sql
query
,這將返回只有3排,whcih包含3類不同勢最高報價。 像我的結果應該有3個不同的類別ID,以及對應於該類別的報價,提供應在該類別
是最大的,這是我所希望輸出
,你可以看到有3不同勢類別,並提供屬於該類別從該類別
看到
這是我的table
sql server的快照。使用組子句的Sql查詢
我想寫一個sql
query
,這將返回只有3排,whcih包含3類不同勢最高報價。 像我的結果應該有3個不同的類別ID,以及對應於該類別的報價,提供應在該類別
是最大的,這是我所希望輸出
,你可以看到有3不同勢類別,並提供屬於該類別從該類別
看到
如果你只是想類別和最大值最大:
SELECT TOP 3 Cat_Id, MAX(Offer) FROM Products GROUP BY Cat_Id
但是,如果你也想等領域,你必須使用一個rank function:
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
可以添加排名前3,並通過max(offer)desc – Milen
訂購,這只是樣品。 我也想檢索所有的列數據。不僅cat_id&offer。 我想要Pro_id,名稱,描述e.tc. 我不能在這裏使用* –
@AmitKumar在這裏。 –
有2種不同的方法來查詢:
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
此查詢返回表中的所有記錄 –
什麼你到目前爲止做了什麼?並給我們一個你想要的樣本 –
此外,數據和期望的輸出樣本會很好。 –
什麼是「類別」? – Avt