如何用PostgreSQL统计各邮箱对应的UUID记录条数?
按邮箱统计UUID数量的PostgreSQL实现方案
你需要的是分组统计功能,PostgreSQL里用GROUP BY结合聚合函数COUNT()就能轻松实现这个需求。
实现SQL语句
SELECT email, COUNT(uuid) AS count_uuid FROM your_table_name -- 替换成你的实际表名 GROUP BY email ORDER BY email; -- 可选,按邮箱排序让结果更整洁
代码说明
GROUP BY email:将表中所有行按照email字段的值分组,相同邮箱的行会被归为同一组COUNT(uuid):统计每组中uuid列的非空值数量,完美匹配你需要的count_uuid结果。如果你的uuid列不会出现NULL值,用COUNT(*)也能得到相同结果,效率上差别不大AS count_uuid:给统计结果列起一个和你期望输出一致的别名
验证示例
假设你的原始表数据是:
email | uuid a@gmail.com | 1 a@gmail.com | 2 b@gmail.com | 3 b@gmail.com | 4 b@gmail.com | 5 c@gmail.com | 6 d@gmail.com | 7
执行上述SQL后,会得到你需要的结果:
email | count_uuid a@gmail.com | 2 b@gmail.com | 3 c@gmail.com | 1 d@gmail.com | 1
如果需要按计数结果排序(比如从多到少),可以把ORDER BY改成ORDER BY count_uuid DESC。
内容的提问来源于stack exchange,提问作者Flavio de Falcao e Helena
相关产品推荐
相关产品推荐

