如何解决使用 count 语句时将一列的 ID 替换为另一个表中的名称?
我正在尝试按省为我的学校项目获取患者计数,我设法在表中获取了该省的计数和 Id,但是由于我使用的是 count 语句,因此它不会让我使用 join显示 ProvinceName 而不是 Id(它说它不是数字)。
这是我正在谈论的两个表的架构
Province 表的内容如下:
ProvinceId | 省名 | 省简称 |
---|---|---|
1 | Terre-Neuve-et-Labrador | 荷兰 |
2 | Île-du-Prince-Édouard | PE |
3 | Nouvelle-Écesse | NS |
4 | 新不伦瑞克 | 注意 |
5 | 魁北克 | 质量控制 |
6 | 安大略 | 开启 |
7 | 曼尼托巴 | MB |
8 | 萨斯喀彻温省 | SK |
9 | 阿尔伯塔 | AB |
10 | Colombie-Britannique | BC |
11 | 育空地区 | YT |
12 | 西北地区 | 新台币 |
13 | 努纳武特 | NU |
这是来自 Patient 表的 n 个样本数据(别担心这是假数据!):
SS | 名字 | 姓氏 | 保险号 | 保险省 | 出生日期 | 性别 | 电话号码 |
---|---|---|---|---|---|---|---|
2 | 多丽丝 | 帕特尔 | PATD778276 | 5 | 1977-08-02 | F | 514-754-6488 |
3 | 朱迪思 | 能源部 | DOEJ7712917 | 5 | 1977-12-09 | F | 418-267-2263 |
4 | 迷迭香 | 巴雷特 | BARR05122566 | 6 | 2005-12-25 | F | 905-638-5062 |
5 | 科迪 | 肯尼迪 | KENC047167 | 10 | 2004-07-01 | M | 604-833-7712 |
我设法使用以下语句按省计算了患者人数:
select count(SS),InsuranceProvince
from Patient
full JOIN Province ON Patient.InsuranceProvince = Province.ProvinceId
group by InsuranceProvince
这给了我下表:
患者计数 | 保险省 |
---|---|
13 | 1 |
33 | 2 |
54 | 3 |
4 | 4 |
608 | 5 |
1778 | 6 |
25 | 7 |
209 | 8 |
547 | 9 |
649 | 10 |
6 | 11 |
35 | 12 |
24 | 13 |
如何用正确的 ProvinceShortName 替换 id 以获得以下最终结果?
省名 | 患者计数 |
---|---|
荷兰 | 13 |
PE | 33 |
NS | 54 |
注意 | 4 |
质量控制 | 608 |
开启 | 1778 |
MB | 25 |
SK | 209 |
AB | 547 |
BC | 649 |
YT | 6 |
新台币 | 35 |
NU | 24 |
提前致谢!
解决方法
所以你实际上可以在选择中指定它。请注意,最佳做法是在选择中包含您分组的内容,但由于您的问题非常具体,那么...
SELECT ProvinceShortName,COUNT(SS) AS PatientsInProvince
FROM Patient
JOIN Province ON Patient.InsuranceProvince=Province.ProvinceId
GROUP BY InsuranceProvince;
,
我建议:
select pr.ProvinceShortName,count(*)
from Patient p join
Province pr
on p.InsuranceProvince = pr.ProvinceId
group by pr.ProvinceShortName
order by min(pr.ProvinceId);
注意事项:
- 关键是在
select
和group by
中包含您想要的列。 - 您似乎希望按省编号顺序显示结果,因此我添加了
order by
。 - 无需计算
SS
的非 NULL 值。您不妨使用count(*)
。 - 表别名使查询更易于编写和阅读。
我假设您需要按省显示患者人数。
SELECT
Province.ProvinceShortName AS [ProvinceName],COUNT(1) as [PatinetCount]
FROM Patient
RIGHT JOIN Province ON Patient.InsuranceProvince = Province.ProvinceId
GROUP BY ProvinceShortName
,
只需将您的查询更改为
select ProvinceShortName As PatientCount,count(InsuranceProvince) As PatientCount
from Patient
full JOIN Province ON Patient.InsuranceProvince = Province.ProvinceId
group by ProvinceShortName
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。