当另一列相同时,计算按列分组的行

时间:2014-01-05 01:40:32

标签: sql sqlite count group-by

在下表中,我想计算至少提交一个问题解决方案的人数。

这是表格:

id user_name problem_name
1  john      sums
2  john      trees
3  john      sums
4  martin    sums
5  martin    trees
6  martin    trees
7  jim       trees

这是我正在寻找的结果:

sums 2
trees 3

我会按problem_name进行分组,但仅限于user_name列相同时。我不知道如何在SQL中编写它。

2 个答案:

答案 0 :(得分:1)

使用count(distinct)

select problem_name, count(distinct user_name) as count
from mytable
group by problem_name

答案 1 :(得分:0)

select table_2.problem_name, count(*) from
       (select user_name, problem_name
       from table_1
       group by user_name, problem_name) as table_2
       group by problem_name

我认为使用子查询比使用distinct更快,如果你有很多行,但我不确定。