Eri*_*icZ 4 sql oracle oracle11g
我有下表.
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
Run Code Online (Sandbox Code Playgroud)
我想指望每个group_id有多少记录,每个group_id有多少个不同的p_id +版本.我有以下查询
SELECT "group_id",count(*) , count(distinct "p_id","version")
FROM tbl
group by "group_id"
Run Code Online (Sandbox Code Playgroud)
显然,它不会起作用,因为Oracle会给我COUNT错误
ORA-00909: invalid number of arguments
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过子查询来完成.但是,有没有简单的方法来获得相同的结果?由于我们在表中有超过5亿条记录,因此对我来说很重要.
我不知道它是否是最好的方法,但我通常会使用分隔符连接两个值来强制执行"distinctness",因此它们成为一个表达式,Oracle可以处理COUNT DISTINCT:
SELECT "group_id",count(*) , count(distinct "p_id" || '-' || "version")
FROM tbl
group by "group_id"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |