gpt4 book ai didi

sql - Postgresql 尝试使用 over() 计算总数的百分比。以前从未使用过 over() 但我读过这是正确的方法

转载 作者:行者123 更新时间:2023-12-02 00:48:26 24 4
gpt4 key购买 nike

这是我的简单表结构,有几个结果: enter image description here

年龄在 18 到 100 之间

我尝试计算一个年龄范围内有好工作的百分比,例如 18 - 24、24-30 等。我需要对“good_jobs”求和,因为这是调查数据,很多人没有响应,那么多空值。

我正在尝试将我可以在多个查询中执行的操作合并到一个查询中:

查询1:

select sum(good_job) as "18_24_GoodJobs"
from jf_q2
where
age >= 18 and age <= 24
and
working=1;

结果 61

查询2:

select sum(good_job) as "18_24_GoodJobs"
from jf_q2
where
age >= 18 and age <= 100
and
working=1;

结果 2571

用一个查询做这样的事情:

select sum(good_job) as "18to24",
(sum(good_job)/ (select sum(good_job over(partition by good_job))) as Percentage)
from jf_q2
where
age >= 18 and age <= 24
and
working=1;

结果 = some_fractional number

我希望有这样的东西

18_24_GoodJobs| all_with_good_jobs
61 | 16%

最终这是一个 flask 应用程序,稍后我将不得不处理这个问题,但我正在尝试将此查询记下来以绘制图形。

谢谢你,周日快乐

最佳答案

您可以使用条件聚合来做到这一点:

select
sum(good_job) filter(where age between 18 and 24) 18_24_GoodJobs,
sum(good_job) filter(where age between 18 and 24)
/ sum(good_job) 18_24_GoodJobs_Part
from jf_q2
where working = 1

这会为您提供 18-24 岁的好工作数量以及 18-24 岁在好工作中所占的比例(小数值)。

关于sql - Postgresql 尝试使用 over() 计算总数的百分比。以前从未使用过 over() 但我读过这是正确的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59605402/

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