Postgresql在使用sum()而不是(



我有一个id和工资的员工列表,我想找到按id排序的前n个员工,累计工资总和为x。可以将sum((和((的累积和相加为cumsum但是如果我使用:其中cumsum<x那不行。

不能在wherehaving中使用窗口函数结果。使用子查询或CTE来实现这一点:

with accumulate as (
select id, salary, sum(salary) over (order by id) as cum_salary
from employees
)
select * from accumulate
where cum_salary < x;

最新更新