计算 Redshift 表中存在的重复行数的更快方法是啥
Posted
技术标签:
【中文标题】计算 Redshift 表中存在的重复行数的更快方法是啥【英文标题】:What is the faster way to calculate number of duplicate rows present in Redshift Table计算 Redshift 表中存在的重复行数的更快方法是什么 【发布时间】:2017-08-22 12:11:26 【问题描述】:表中有数百万条记录。并且需要在 Redshift 中计算我的表中存在的重复行数。我可以通过使用以下查询来实现它,
select
sum(cnt) from (select <primary_key>
, count(*)-1 as cnt
from
table_name
group by
<primary_key> having count(*)>1
-
有没有更快的方法来达到同样的效果?
有没有办法在不使用子查询的情况下在单个查询中实现这一点?
谢谢。
【问题讨论】:
如何定义“重复行”?是否所有列都需要重复,或者是否有一列包含可以更轻松识别重复的唯一键? 【参考方案1】:您可以尝试以下查询:
SELECT Column_name, COUNT(*) Count_Duplicate
FROM Table_name
GROUP BY Column_name
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
【讨论】:
【参考方案2】:如果重复的标准只是重复主键那么
SELECT count(1)-count(distinct <primary_key>) FROM your_table
会起作用,除非您在 Redshift 中将您的列指定为主键(它不会强制约束,但如果您将列标记为主键 count(distinct <primary_key>)
将返回与 count(1)
相同的值 即使此列中有重复值
【讨论】:
以上是关于计算 Redshift 表中存在的重复行数的更快方法是啥的主要内容,如果未能解决你的问题,请参考以下文章