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