2016-10-04 34 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))) 
) 
相關問題