我正试图查找特定数据集中生成的重复数据
我最初的查询是
SELECT
b.admidate, a.token_person_id、
COUNT (DISTINCT(a.token_person_id)) AS patientCount
FROM
new_alzheimers_agegroup2 a
LEFT JOIN
住院病人映射 b ON b.token_person_id = a.token_person_id
且 a.indexdate = b.disdate
ORDER BY
a.token_person_id
但与原始数据相比,我发现有 1500 个重复数据。我该如何创建一个能找到重复数据的查询?
为了找到重复的数据,你需要修改你的查询,以便查找
token_person_id
和
admidate
组合中出现多次的记录。以下是如何操作的方法:
SELECT
b.admidate, a.token_person_id,
COUNT(*) AS duplicate_count
FROM
new_alzheimers_agegroup2 a
LEFT JOIN
住院病人映射 b ON b.token_person_id = a.token_person_id AND a.indexdate = b.disdate
GROUP BY
b.admidate, a.token_person_id
HAVING
COUNT(*) > 1
ORDER BY
duplicate_count DESC;
以下是此查询的工作原理:
-
分组: 我们使用
GROUP BY
子句根据admidate
和token_person_id
对记录进行分组。这意味着具有相同admidate
和token_person_id
的所有记录将被放在一起。 -
计数:
COUNT(*)
函数计算每个组中的记录数。 -
HAVING 子句:
HAVING
子句用于过滤分组结果。在这种情况下,我们只保留计数大于 1 的组,这表示存在重复的admidate
和token_person_id
组合。 -
排序: 最后,我们使用
ORDER BY
子句按重复次数降序对结果进行排序,以便首先看到重复次数最多的记录。
此查询将返回一个表,其中包含重复的
admidate
和
token_person_id
组合、重复次数以及其他相关信息。然后,可以使用此信息来识别和处理数据集中的重复数据。