【问题标题】:Is there any query to find duplicate records count corresponding to package_no column?是否有任何查询来查找与 package_no 列对应的重复记录计数?
【发布时间】:2021-05-31 06:41:31
【问题描述】:

我有一个这样的表结构

package_no   road_name road_code
p1            r1         c1
p1            r1         c1
p2            r1         c1

我需要计算与列package_no对应的重复道路代码 我希望上表中的一条记录包含重复的包 p1 和道路计数为 1

【问题讨论】:

标签: sql postgresql


【解决方案1】:

你有一个一致性问题。在您的初始描述中,您说“与 package_no 列对应的重复道路代码”,但是在回复@GordonLinoff 时,您表示您想要“r1 的重复外观”。然而“r1”对应于road_name。那么它是:road_Code 或 rode_name。无论哪种方式:

select t.package_no, t.road_code, count(*) - 1 "# Duplicates" 
  from test t
 group by t.package_no, t.road_code
 having count(*) > 1;

只需将 road_name 替换为 road_code 即可。
查询返回 count - 1 根据初始要求“p1 and road count with 1”

但是如果还存在以下结果会是什么:

package_no   road_name road_code
p1            r1         c2
p1            r1         c2
p1            r2         c1
p1            r2         c1
p1            r2         c2

【讨论】:

  • 感谢您的帮助,第二个查询符合我的要求,因为一个包必须有一条道路可用
【解决方案2】:

您想与count(distinct) 聚合吗?

select package_no, count(*) as num_rows, count(distinct r1) as num_r1
from t
group by package_no
having count(*) > 1;

【讨论】:

  • 我需要按 package_no 来统计 r1 的重复外观不明显分组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
相关资源
最近更新 更多