Sql 按id的唯一计数

Sql 按id的唯一计数,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,如何进行唯一计数,以便ID#1:的计数为绿色-2、红色-1、蓝色-1,ID#2、橙色-2、粉色-1、蓝色-1、白色-1 然后我需要使用rank函数按ID对颜色进行排序。我在网上看到了如何使用rank函数 我使用的是sql server 2014。您可以按id、颜色进行分组,然后根据计数顺序进行排序 select *, rank() over (order by cnt desc) from (select *, count(*) as cnt from YourTable

如何进行唯一计数,以便ID#1:的计数为绿色-2、红色-1、蓝色-1,ID#2、橙色-2、粉色-1、蓝色-1、白色-1

然后我需要使用rank函数按ID对颜色进行排序。我在网上看到了如何使用rank函数


我使用的是sql server 2014。

您可以按id、颜色进行分组,然后根据计数顺序进行排序

select *, rank() over (order by cnt desc)
from
    (select *, count(*) as cnt
    from YourTable
    group by id, color)  

我想你要问的问题是:

select id, color, count(*) as cnt,
       rank() over (partition by id order by count(*) desc) as rnk
from t
group by id, color;

你知道如何使用
rank()
,但你不知道
group by
?我在网上看到了如何使用rank(),但我需要一个按ID的每种颜色的唯一计数。我知道如何使用group by,即group by idSELECT ID,count(color)as color to#D1 From#table 1.nvmd我弄明白了