gpt4 book ai didi

mysql - sql 查询 group by 带聚合

转载 作者:行者123 更新时间:2023-11-29 19:11:26 24 4
gpt4 key购买 nike

以下表为例:

    zipcode |  zipsource | patientcount
-----------------------------------
81501 | CMHSP | 10
81503 | CMHSP | 20
81505 | CMHSP | 30
81501 | SMHRMC | 15
81503 | SMHRMC | 25
81505 | SMHRMC | 35

尝试仅显示来源和来源 = SMHRMC 中患者计数高于总数 20% 的邮政编码(通常是一个参数,但在本例中我选择了 SMHRMC)。输出表如下:

   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 可以是一个多值参数,因此我将 ('COMHSP', 'SMHRMC') 中的子句更改为 zip_source 并且它可以工作,但我想为每个源添加total_count但不是两个来源的组合。 Group By 在 where 子句之后不起作用。感谢所有提供帮助的人。

最佳答案

试试这个:

SELECT zipcode, zipsource, patientcount * 100 / total_count
FROM mytable
CROSS JOIN (SELECT SUM(patientcount) AS total_count
FROM mytable
WHERE zipsource = 'SMHRMC') AS x
WHERE zipsource = 'SMHRMC' AND patientcount / total_count > 0.2

查询使用 CROSS JOIN为了链接 patientcount 的总计数与 table 。使用此计数,我们可以计算百分比,并过滤掉任何不超过所需值的行。

Demo here

关于mysql - sql 查询 group by 带聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43048976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com