如何统计姓名相同但性别不同的重复人员数量?
解决思路:统计同一人不同性别记录的人员数量
先明确你的数据表结构(转成Markdown格式):
| unique_id | first_name | last_name | gender |
|---|---|---|---|
| 1 | john | smith | M |
| 2 | kevin | jones | M |
| 3 | kevin | jones | F |
你的需求是统计姓名(first_name + last_name)相同但性别不同的人员总数,示例中结果为1。
核心解决逻辑(以SQL为例)
通过分组统计+筛选的方式实现:
- 按
first_name和last_name对记录分组,代表同一个人 - 统计每组内不同性别的数量,筛选出性别数量≥2的分组(即同一人存在不同性别记录)
- 统计这些符合条件的分组数量,就是最终结果
具体SQL代码
SELECT COUNT(*) AS duplicate_person_count FROM ( -- 子查询:筛选出有不同性别记录的人员 SELECT first_name, last_name FROM your_table_name GROUP BY first_name, last_name HAVING COUNT(DISTINCT gender) > 1 ) AS gender_conflict_persons;
代码说明
COUNT(DISTINCT gender):统计每组内不重复的性别数量,避免同一人有多条同性记录时的误判- 子查询先筛选出所有存在性别冲突的人员,外层查询直接统计这类人员的总数,完全匹配你的需求
内容的提问来源于stack exchange,提问作者pmh
相关产品推荐
相关产品推荐

