Sql server SQL Server中项目的排名
在SQLServer2008R2中,我试图计算出单个项目的排名,这是由发生次数决定的。我可以计算出许多项目的排名,即一种颜色的前十名,但我无法得到特定颜色的排名 也就是说,我有一个Sql server SQL Server中项目的排名,sql-server,sql-server-2008,statistics,Sql Server,Sql Server 2008,Statistics,在SQLServer2008R2中,我试图计算出单个项目的排名,这是由发生次数决定的。我可以计算出许多项目的排名,即一种颜色的前十名,但我无法得到特定颜色的排名 也就是说,我有一个车辆表,其中有一个车辆.colorID列 对于特定的colorID,我想确定它的等级 i、 e colorID7有10个实例 colorID 10有5个实例 colorID 2有1个实例 在该结果集中,colorID 7的秩为1,colorID 10的秩为2,依此类推 我想查询colorID 10,发现它的排名为2
车辆表
,其中有一个车辆.colorID
列
对于特定的colorID,我想确定它的等级
i、 e
- colorID7有10个实例
- colorID 10有5个实例
- colorID 2有1个实例
有人知道我如何查询单个项目的排名吗?要对所有颜色进行排名:
;with cteCount as (
select ColourID, count(*) as ColourCount
from Vehicles
group by ColourID
)
select ColourID, ColourCount,
row_number() over (order by ColourCount desc) as Rank
from cteCount
然后,您可以扩展此技术以查询单个项目的排名:
;with cteCount as (
select ColourID, count(*) as ColourCount
from Vehicles
group by ColourID
),
cteRank as (
select ColourID, ColourCount,
row_number() over (order by ColourCount desc) as Rank
from cteCount
)
select ColourID, ColourCount, Rank
from cteRank
where ColourID = 10
太好了,谢谢你,乔!我缺少的是row_number()元素。你让我很开心,这让我有一段时间被束缚了:)