2016-10-04 26 views
2

我很难根据最常见的值进行分组。 我拥有的数据是:根据最常见的值进行分组

ID Name 
327 TypeA 
327 TypeA 
327 TypeA 
327 TypeB 
327 TypeB 
327 TypeB 
327 TypeB 

在这种情况下,我希望选择ID和姓名“的TypeB”,因为它是该ID的最常用的值。所以输出看起来像:

ID Name 
327 TypeB 

希望有人可以帮助这个,谢谢。

回答

5

这在统计学中被称为mode。这里有一个方法:

select id, name 
from (select id, name, count(*) as cnt, 
      row_number() over (partition by id order by count(*) desc) as seqnum 
     from t 
     group by id, name 
    ) t 
where seqnum = 1; 
+0

谢谢,这是输出正是我之后。非常感激! – Revokez

1

这里是如何使用一组在一个子查询做到这一点通过

select 
    ID, 
    Name 
from 
(
    Select 
     ID, 
     Name, 
     Count(distinct(Name)) as [Count] 
    from tablename 
    group by 
     ID, 
     Name 
    having Count(distinct(Name)) = MAX(Count(distinct(Name))) 
)