首页 > 解决方案 > 计算拥有双重国籍的人

问题描述

我试图在 sql server 中计算来自不同国家的人数。但是有些人也有双重国籍的船。如何在考虑双重国籍的情况下编写查询并计算两国的人数。

例子:

ID  CITIZENSHIP DUAL CITIZENSHIP
00000S123   US  ITALY
00000BH01   UK  
00000VA03   US  
00000SR01   UK  US

理想情况下,只有两名学生拥有美国公民船,但应该是 3 人,因为学生也拥有美国双重国籍。请注意,我不想在 where 子句中硬编码

WHERE  DUAL_CITIZENSHIP='US'

谢谢, S‌indhu

标签: sqlsql-servertsql

解决方案


实际上,我相信为了计数的目的,您希望 1 排在概念上变为 2,而双重国籍的船被向下旋转以获得第二排。您当然可以查询Citizenship = 'US' 或 dual_citizenship = 'US' 但希望避免双重包含谓词。

类似(未提供表名):

SELECT count(*)
FROM
(
    SELECT id, citizenship
    FROM yourTable
    UNION ALL
    SELECT id, dual_citizenship as citizenship
    FROM yourTable
    WHERE dual_citizenship is not null
) a
WHERE citizenship = 'US'

如果您想要所有国家/地区:

SELECT citizenship, count(*)
FROM
(
    SELECT id, citizenship
    FROM yourTable
    UNION ALL
    SELECT id, dual_citizenship as citizenship
    FROM yourTable
    WHERE dual_citizenship is not null
) a
GROUP BY citizenship

推荐阅读