sql - 计算拥有双重国籍的人
问题描述
我试图在 sql server 中计算来自不同国家的人数。但是有些人也有双重国籍的船。如何在考虑双重国籍的情况下编写查询并计算两国的人数。
例子:
ID CITIZENSHIP DUAL CITIZENSHIP
00000S123 US ITALY
00000BH01 UK
00000VA03 US
00000SR01 UK US
理想情况下,只有两名学生拥有美国公民船,但应该是 3 人,因为学生也拥有美国双重国籍。请注意,我不想在 where 子句中硬编码
WHERE DUAL_CITIZENSHIP='US'
谢谢, Sindhu
解决方案
实际上,我相信为了计数的目的,您希望 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
推荐阅读
- php - 如何使用 shell_exec() 在 Windows XAMPP 上运行 linux 命令
- python - 训练期间的每类验证准确度
- excel - 循环在当前目录中创建的新文件夹中将范围保存为 pdf 文件
- reactjs - 如何在graphql的内联片段中获取数据?
- google-calendar-api - 使用 kloudless 从多个 calendarId 获取事件
- python - 如何在不删除 NaN 值的情况下删除 pandas 中的重复项
- java - 单核细胞增多症
带有 if 语句 - java - 如何确保 Firebase 仅从服务器获取数据
- sql - 在 postgresql 中将相同日期的值相加
- java - 通过 TCP/IP 套接字发送大数据