使用 SQL 一起使用 count 和 case
Posted
技术标签:
【中文标题】使用 SQL 一起使用 count 和 case【英文标题】:Use count and case together using SQL 【发布时间】:2021-07-30 00:30:27 【问题描述】:我想用一个查询返回3列,有多少A型血患者是患者集, 有多少B型血患者,按患者分有多少个国家。
每位患者都使用唯一的 ID 进行识别,因此我所依赖的就是患者 ID。每个州只使用州缩写和血型只是字母。
还有患者集合,集合只是一组患者集合在一起,所以就像一堆患者ID,它们也像患者ID一样是唯一的
到目前为止,我有这样的事情,我不想使用 SUM,因为这会将每个患者 ID 号加在一起,我应该使用 Count。有没有办法使用案例场景来计算?还是有更好的方法来完成我想要的?
select distinct PTID,
select count (patientID CASE WHEN bloodtype = 'A') as totalAbloodtype,
select count (patientID CASE WHEN bloodtype = 'AB') as totalABbloodtype,
select count (distinct countrycode) as totalcountriesinset
from patientsinfo
and PTID is not null
group by PTID
【问题讨论】:
停止使用nolock 溅出你的代码 你需要展示样本数据和想要的结果。 【参考方案1】:您可以将sum
与case expression
一起使用。你不需要distinct
和group by
,而且你似乎缺少where
和大量selects
,所以你拥有的代码只是一个语法错误。
显然没有样本数据或期望的结果我无法测试,但这个想法是
select PTID,
sum (CASE WHEN bloodtype = 'A' then 1 else 0 end) as totalAbloodtype,
sum (CASE WHEN bloodtype = 'AB' then 1 else 0 end) as totalABbloodtype,
count (distinct countrycode) as totalcountriesinset
from patientsinfo
where PTID is not null
group by PTID
【讨论】:
以上是关于使用 SQL 一起使用 count 和 case的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL 查询中一起使用 union 和 count(*)
SELECT CASE SQL 中的 DISTINCT COUNT
如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?