[英]How to COUNT DISTINCT on more than one column
我有下表。
group _id p_id version value
1 1 1 10
1 1 2 11
1 1 2 12
1 2 3 13
2 1 2 14
2 1 3 15
2 1 2 16
我想指望每个group_id有多少条记录,以及每个group_id有多少不同的p_id +版本。 我有以下查询
SELECT "group_id",count(*) , count(distinct "p_id","version")
FROM tbl
group by "group_id"
显然,它不起作用,因为Oracle会给我COUNT错误
ORA-00909: invalid number of arguments
我知道这可以通过子查询来完成。 但是,有没有简单的方法来获得相同的结果? 评估性能对我很重要,因为表中有超过5亿条记录。
我不知道这是否是最好的方法,但是我通常使用定界符将两个值连接起来以强制执行“区别性”,因此它们成为一个表达式,Oracle可以使用COUNT DISTINCT
来处理:
SELECT "group_id",count(*) , count(distinct "p_id" || '-' || "version")
FROM tbl
group by "group_id"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.