题解 | 统计salary的累计和running_total
统计salary的累计和running_total
https://www.nowcoder.com/practice/58824cd644ea47d7b2b670c506a159a6
select emp_no,salary,sum(salary) over (order by emp_no) running_total from salaries where to_date = '9999-01-01'
1. 在许多数据库系统(如 PostgreSQL、MySQL 8.0+、SQL Server 等)中,如果在 SUM()
窗口函数中指定了 ORDER BY
,但没有显式指定 ROWS
或 RANGE
子句,那么默认行为通常是 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
。这意味着它会计算从第一行到当前行的累计值。
2.如果是SUM( ) OVER (PARTITION BY column)则代表是对窗口内或整个表(如果没有 PARTITION BY)的列求和
如果使用了 ORDER BY:SUM() 窗口函数会计算从分区的开始到当前行的累计值。