Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中项目的排名_Sql Server_Sql Server 2008_Statistics - Fatal编程技术网

Sql server SQL Server中项目的排名

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

在SQLServer2008R2中,我试图计算出单个项目的排名,这是由发生次数决定的。我可以计算出许多项目的排名,即一种颜色的前十名,但我无法得到特定颜色的排名

也就是说,我有一个
车辆表
,其中有一个
车辆.colorID

对于特定的colorID,我想确定它的等级

i、 e

  • colorID7有10个实例
  • colorID 10有5个实例
  • colorID 2有1个实例
在该结果集中,colorID 7的秩为1,colorID 10的秩为2,依此类推

我想查询colorID 10,发现它的排名为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()元素。你让我很开心,这让我有一段时间被束缚了:)