gpt4 book ai didi

postgresql group count distinct 使用快速方式

转载 作者:行者123 更新时间:2023-11-29 12:09:21 26 4
gpt4 key购买 nike

我得到了包含 2 列的表 T,如下例所示:

C1      C2
----------
A x
A x
A y
B x
B x

我想计算 C2 中每个值的不同 C1 的数量。这个结果应该是这样的:

C1      distinct count
----------------------
A 2 // count distinct x,x,y = 2
B 1 // count distinct x,x = 1

很容易得出这样的SQL查询

select C1, count(distinct C2) from T group by C1

但是,正如 postgresql COUNT(DISTINCT …) very slow 中所讨论的那样,此查询性能不佳。我想按照该文章中的建议使用改进的查询 (count (*) (select distinct ...)),但我不知道如何使用 group by 形成查询。

最佳答案

如果您想避免 DISTINCT 关键字,请尝试此查询

示例数据:

stackoverflow=# select * from T;
c1 | c2
----+----
A | x
A | x
A | y
B | x
B | x
(5 rows)

查询:

stackoverflow=# WITH count_distinct as (SELECT C1 FROM T GROUP BY c1,c2)
SELECT c1,count(c1) FROM count_distinct GROUP BY C1; --updated missing group by

输出:

 c1 | count 
----+-------
B | 1
A | 2
(2 rows)

相同的输出,但您应该先尝试性能。

关于postgresql group count distinct 使用快速方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962440/

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