You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 9.6中如何统计唯一数据对的数量?

解决PostgreSQL中count(distinct a, b)报错的问题

这个问题我碰到过很多次啦——PostgreSQL的count(distinct)并不支持直接传入多列参数,你写的count(distinct a, b)会被它当成要找一个接受两个整数参数的count函数,自然就报找不到的错误了。下面给你几个靠谱的解决办法:

方法1:将多列包装成行类型(最简洁)

把a和b放在括号里,让PostgreSQL把它们识别为一个行对象,这样distinct就能正确判断唯一的组合了:

select count(distinct (a, b)) from t;

这个写法是最直接的,适合只需要统计唯一数据对数量的场景。

方法2:用DISTINCT ON配合子查询

如果之后还需要查看具体的唯一数据对,这种方法会更灵活:

select count(*) from (
    select distinct on (a, b) a, b from t
) as unique_pairs;

子查询里的distinct on (a, b)会先筛选出所有不重复的(a,b)组合,外层再用count(*)统计这些组合的数量。

方法3:通过GROUP BY分组计数

另一种思路是先按a和b分组,再统计分组的数量:

select count(*) from (
    select 1 from t group by a, b
) as unique_pairs;

group by a, b会把相同的(a,b)组合归为一组,每组返回一个固定值(这里用1就行),外层的count(*)就能得到唯一数据对的总数。

内容的提问来源于stack exchange,提问作者Fomalhaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:44:58