在 SQL 中显示符合条件的结果
Display results in SQL that meet the criteria
select只有同时拥有ICU和SICU床位的前10名医院,即至少有1张ICU床位和至少有1张SICU床位的医院才能纳入这部分分析.这是我目前所拥有的
select bu.business_name as 'Hospital Name'
,sum(be.license_beds) as Total_Licenses
,case when be.bed_id = 4 then 'ICU' end as "ICU"
,case when be.bed_id = 15 then 'SICU' end as "SICU"
from bed_fact be
join bed_type bt
on be.bed_id = bt.bed_id
join business bu
on be.ims_org_id = bu.ims_org_id
where be.bed_id = 4
or be.bed_id = 15
and be.license_beds IS NOT NULL
group
by bu.business_name
order
by Total_Licenses DESC
limit 10
;
我需要知道如何只计算至少具有 ICU 或 SICU 值之一的医院
您需要条件聚合和 having
子句:
select
bu.business_name as Hospital_Name,
sum(be.license_beds) as Total_Licenses,
sum(be.bed_id = 4) as ICU,
sum(be.bed_id = 15) as SICU
from bed_fact be
inner join bed_type bt on be.bed_id = bt.bed_id
inner join business bu on be.ims_org_id = bu.ims_org_id
where be.bed_id in (4, 15) and be.license_beds is not null
group by bu.business_name
having ICU > 0 and SICU > 0
order by Total_Licenses desc
limit 10
如果您不知道结果集中的计数,则将聚合函数移动到 having
子句:
select
bu.business_name as Hospital_Name,
sum(be.license_beds) as Total_Licenses
from bed_fact be
inner join bed_type bt on be.bed_id = bt.bed_id
inner join business bu on be.ims_org_id = bu.ims_org_id
where be.bed_id in (4, 15) and be.license_beds is not null
group by bu.business_name
having sum(be.bed_id = 4) > 0 and sum(be.bed_id = 15) > 0
order by Total_Licenses desc
limit 10
select只有同时拥有ICU和SICU床位的前10名医院,即至少有1张ICU床位和至少有1张SICU床位的医院才能纳入这部分分析.这是我目前所拥有的
select bu.business_name as 'Hospital Name'
,sum(be.license_beds) as Total_Licenses
,case when be.bed_id = 4 then 'ICU' end as "ICU"
,case when be.bed_id = 15 then 'SICU' end as "SICU"
from bed_fact be
join bed_type bt
on be.bed_id = bt.bed_id
join business bu
on be.ims_org_id = bu.ims_org_id
where be.bed_id = 4
or be.bed_id = 15
and be.license_beds IS NOT NULL
group
by bu.business_name
order
by Total_Licenses DESC
limit 10
;
我需要知道如何只计算至少具有 ICU 或 SICU 值之一的医院
您需要条件聚合和 having
子句:
select
bu.business_name as Hospital_Name,
sum(be.license_beds) as Total_Licenses,
sum(be.bed_id = 4) as ICU,
sum(be.bed_id = 15) as SICU
from bed_fact be
inner join bed_type bt on be.bed_id = bt.bed_id
inner join business bu on be.ims_org_id = bu.ims_org_id
where be.bed_id in (4, 15) and be.license_beds is not null
group by bu.business_name
having ICU > 0 and SICU > 0
order by Total_Licenses desc
limit 10
如果您不知道结果集中的计数,则将聚合函数移动到 having
子句:
select
bu.business_name as Hospital_Name,
sum(be.license_beds) as Total_Licenses
from bed_fact be
inner join bed_type bt on be.bed_id = bt.bed_id
inner join business bu on be.ims_org_id = bu.ims_org_id
where be.bed_id in (4, 15) and be.license_beds is not null
group by bu.business_name
having sum(be.bed_id = 4) > 0 and sum(be.bed_id = 15) > 0
order by Total_Licenses desc
limit 10