每组GROUP BY的最大计数()

时间:2014-03-02 22:40:13

标签: mysql sql

我正在尝试为按组功能组成的每个组获得最大值(选项)。

假设我们有:

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

1 个答案:

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