Postgresql 在使用 sum() over((
Postgresql selecting specific rows when using sum() over((
我有一个员工列表,有id和salary,我想找到按id排序的前n名员工,累计薪水总和为x。
可以用 sum() over () 作为 cumsum 添加累计和
但如果我使用:
其中 cumsum < x
那不行。
您不能在 where
或 having
中使用 window 函数结果。使用子查询或 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;
我有一个员工列表,有id和salary,我想找到按id排序的前n名员工,累计薪水总和为x。 可以用 sum() over () 作为 cumsum 添加累计和 但如果我使用: 其中 cumsum < x 那不行。
您不能在 where
或 having
中使用 window 函数结果。使用子查询或 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;