使用postgresql 12.2
“users”表有一个userid和campaign的列表,以显示广告活动为用户带来了什么。我想展示一下每一次竞选所带来的总收入的百分比。
预期结果如下:
campaign_id | percentage
-------------+-------------------
AC | 0.18
SM | 0.37
BC | 0.24
TI | 0.21
当我尝试的时候
select campaign_id, (select
count(userid) over (partition by campaign_id)
from users
)
/
(select
count(userid)
from users) as percentage
from users
group by campaign_id
;
我得到一个错误“error:more-one row returned by a subquery used as a expression”
1条答案
按热度按时间vwhgwdsa1#
问题在于除法左侧的子查询返回多行。在聚合查询中,可以使用
count(*)
获取users
具有相同campaign_id
. 至于除法的denumerator(总行数),您也不需要子查询—只需使用窗口函数即可。所以: