SQL计数在一个组中

时间:2013-06-14 17:41:50

标签: sql oracle

我有一张如下表格

C1 | C2 | C3

aa | bb | cc
aa | dd | tt
jj | uu | yy
aa | bb | cc
jj | rr | pp

C1和C2可以以任何组合形式出现并且可以重复值。每个C3值对于C2值是唯一的。我需要查询表以获取C1中的所有不同值,而不是将映射映射到C2中的不同值。按降序排列(不需要降序)。但需要按C1分组,如下所示

C1 | C2 |count| C3

aa | bb | 2   | cc
aa | dd | 1   | tt
jj | uu | 1   | yy
jj | rr | 1   | pp

最好的办法是什么?

2 个答案:

答案 0 :(得分:2)

这可以使用C1C2C3列上的GROUP BY聚合函数来完成。由于您按这3列分组,因此计数将是匹配的行的总数:

select C1, C2, count(*) Total, C3
from yourtable
group by C1, C2, C3
order by C1, total desc

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

select C1, C2, Count(1), C3
from mytable
group by C1, C2, C3
order by 3 desc