2014-03-02 38 views
0

我試圖讓每個組按功能組成的最大(選項)。每個組的最大數量()GROUP BY

假設我們有:

Name:  Option: 
Name1  o1 
Name1  o2 
Name1  o1 
Name1  o1 
Name1  o3 
Name2  o4 
Name2  o5 
Name2  o4 
Name3  o6 
Name3  o7 
Name3  o7 
Name3  o8 

最終結果預計:

Group:  max count of option: 
Name1  o1 
Name2  o4 
Name3  o7 
+0

你能選擇的計數? – Strawberry

回答

1

要獲得期權數量,你可以這樣做:

select `group`, `option`, count(*) as cnt 
from table t 
group by `group`, `option`; 

有幾種如何獲得相應於最大值的選項。我認爲,在這種情況下,最簡單的是substring_index()/group_concat()方法:

select `group`, 
     substring_index(group_concat(`option` order by cnt desc), ',', 1) as maxoption 
from (select `group`, `option`, count(*) as cnt 
     from table t 
     group by `group`, `option` 
    ) tgo 
group by `group`; 
+0

謝謝。第二個查詢完成了這項工作。第一個查詢給出了每個名稱的分組選項的數量。 –