gpt4 book ai didi

sql - 获得计数 postgres 的总和

转载 作者:行者123 更新时间:2023-11-29 12:11:34 25 4
gpt4 key购买 nike

我有两个表jobsusers。用户与作业具有一对多的关系。

我想将用户分成 jobs_done 组。换句话说,有多少用户做了 1 份工作、2 份工作、3 份工作等下面的查询就是这样做的。但是,我想将完成 3 个或更多工作的所有用户归为一组。

这是我目前的查询

select
jobs_done,
count(1) as number_of_users
from ( select
u.id,
count(*) as jobs_done
from jobs j
JOIN users u on j.user_id = u.id
group by u.id ) a
group by jobs_done

当前输出:

times_used  number_of_users  
1 255
2 100
3 30
4 10
5 9

期望的输出:

times_used  number_of_users  
1 255
2 100
3+ 49

最佳答案

您可以使用 case 表达式将值 3+ 分组为一个大组。这应该有效:

select
case
when jobs_done >= 3 then '3+'
else cast(jobs_done as varchar(5))
end as jobs_done,
count(1) as number_of_users
from (
select
u.id,
count(*) as jobs_done
from jobs j
join users u on j.user_id = u.id
group by u.id
) a
group by case when jobs_done >= 3 then '3+'
else cast(jobs_done as varchar(5))
end;

关于sql - 获得计数 postgres 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931158/

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