繁体   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