【发布时间】:2017-08-20 07:29:45
【问题描述】:
以下表为例:
zipcode | zipsource | patientcount
-----------------------------------
81501 | CMHSP | 10
81503 | CMHSP | 20
81505 | CMHSP | 30
81501 | SMHRMC | 15
81503 | SMHRMC | 25
81505 | SMHRMC | 35
对于 Source 和 Source = SMHRMC(通常是一个参数,但在示例中我选择了 SMHRMC),尝试仅显示患者人数超过总数 20% 的邮政编码。输出表如下:
zipcode | zipsource | patientcount | Total | Percent
--------------------------------------------------------
81503 | SMHRMC | 25 | 75 | 25%
81505 | SMHRMC | 35 | 75 | 47%
我已经尝试了多个查询,但目前我认为我还没有接近。有任何想法吗?
有效的查询如下:
select zipcode,
zip_source,
patient_count,
total_count,
patient_count *100/total_count as percentage
from Zip_Count_Source
cross join (select sum(patient_count) as total_count
from zip_count_Source
where zip_source = 'COMHSP') as X
where zip_source = 'COMHSP' and patient_count*100/total_count > 1
但是我现在遇到的问题是 Zip_source 可以是一个多值参数,所以我将子句更改为 zip_source in ('COMHSP', 'SMHRMC') 并且它可以工作,但我想为每个来源计算 total_count但不是两个来源的组合。 Group By 在 where 子句之后不起作用。感谢所有帮助。
【问题讨论】:
标签: mysql count group-by sum aggregate