基于最常见的值进行分组

时间:2016-10-04 11:34:00

标签: sql sql-server

我无法根据最常见的价值进行分组。 我拥有的数据是:

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

在这种情况下,我想要选择ID和名称" TypeB"因为它是该ID的最常见值。所以输出看起来像:

ID  Name
327 TypeB

希望有人可以帮忙解决这个问题,谢谢。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

以下是如何在子查询中使用group by

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)))
)