gpt4 book ai didi

sql - 如何在不止一列上计算 DISTINCT

转载 作者:行者123 更新时间:2023-12-04 13:40:03 24 4
gpt4 key购买 nike

我有下表。

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 亿条记录。

SQL Fiddle

最佳答案

我不知道这是否是最好的方法,但我通常将两个值连接起来,使用分隔符来强制“不同”,因此它们成为一个表达式,Oracle 可以使用 COUNT DISTINCT 处理它。 :

SELECT "group_id",count(*) , count(distinct "p_id" || '-' || "version")
FROM tbl
group by "group_id"

关于sql - 如何在不止一列上计算 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com