微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 count 语句时将一列的 ID 替换为另一个表中的名称?

如何解决使用 count 语句时将一列的 ID 替换为另一个表中的名称?

我正在尝试按省为我的学校项目获取患者计数,我设法在表中获取了该省的计数和 Id,但是由于我使用的是 count 语句,因此它不会让我使用 join显示 ProvinceName 而不是 Id(它说它不是数字)。

这是我正在谈论的两个表的架构

The two tables

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);

注意事项:

  • 关键是在 selectgroup 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

Result

,

只需将您的查询更改为

select ProvinceShortName As PatientCount,count(InsuranceProvince) As PatientCount
from Patient
full JOIN Province ON Patient.InsuranceProvince = Province.ProvinceId    
group by ProvinceShortName

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。