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

PostgreSQL如何查询列count与distinct count差值对应的重复数据?

SQL查询重复capture_time对应行方案

查询重复的capture_time及重复次数

执行以下语句可以先定位所有出现过重复的capture_time值,以及每个值的出现次数:

SELECT capture_time, COUNT(*) AS occurrence_count
FROM 替换为你的实际表名
GROUP BY capture_time
HAVING COUNT(*) > 1;

所有返回行的occurrence_count - 1相加总和就是你计算得到的差值36026。

查询所有对应重复值的原始行

如果你需要获取这些重复capture_time关联的全部原始行数据,可使用以下两种通用写法:

  • 写法1:IN子查询(兼容所有主流SQL数据库)
SELECT *
FROM 替换为你的实际表名
WHERE capture_time IN (
    SELECT capture_time
    FROM 替换为你的实际表名
    GROUP BY capture_time
    HAVING COUNT(*) > 1
);
  • 写法2:窗口函数(适用于MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)
SELECT * FROM (
    SELECT *,
           COUNT(*) OVER (PARTITION BY capture_time) AS same_time_total
    FROM 替换为你的实际表名
) AS temp_table
WHERE same_time_total > 1;

精准查询差值对应的36026行多余重复数据

如果需要直接得到和差值数量完全一致的、重复出现的多余行(排除每个capture_time第一次出现的行),可使用窗口函数实现:

SELECT * FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY capture_time ORDER BY capture_time) AS row_rank
    FROM 替换为你的实际表名
) AS temp_table
WHERE row_rank > 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:36:03