选择不同性别但名字和姓氏相同的记录计数

问题描述 投票:0回答:1

我有一张如下所示的桌子

唯一_id 名字 姓氏 姓氏
1 约翰 史密斯 M
2 凯文 琼斯 M
3 凯文 琼斯 F

在此示例中,unique_ids #2 和 #3 的记录是同一个人,但性别不同。 我想确定此类记录的数量。在本例中,输出为 1,因为该表有一个人的重复项。 TIA 的任何指示。

sql sql-server tsql
1个回答
0
投票

您可以按名字和姓氏进行分组,然后使用 HAVING 子句仅保留具有多个结果的组合。我喜欢使用如下所示的通用表表达式,因为您可以轻松输出基础行以进行故障排除。

DECLARE @tbl TABLE(
    unique_id int,
    first_name varchar(20),
    last_name varchar(20),
    gender char(1)
)

INSERT @tbl(unique_id, first_name, last_name, gender) 
VALUES 
    (1, 'john', 'smith', 'M'),
    (2, 'kevin', 'jones', 'M'),
    (3, 'kevin', 'jones', 'F')

;WITH cteDupes AS (
    SELECT 
        first_name, last_name
    FROM 
        @tbl
    GROUP BY 
        first_name, last_name 
    HAVING COUNT(*) > 1
)

-- To see the actual names with dupes
-- SELECT * FROM cteDupes

-- To see the count only
SELECT COUNT(*) FROM cteDupes
© www.soinside.com 2019 - 2024. All rights reserved.