这道题目要求我们计算在职员工的累计薪水和。我们要做的事情如下:

1. 确定总体问题

我们需要从薪水表中提取当前在职员工(to_date = '9999-01-01')的薪水信息,并计算每个员工的累计薪水和。累计薪水和是指在按员工编号升序排列的情况下,当前员工及其之前所有员工的薪水总和,并返回员工编号、薪水和累计薪水和。

2. 分析关键问题

  • 筛选在职员工:通过to_date = '9999-01-01'条件筛选出在职员工。
  • 计算累计薪水和:使用窗口函数SUM计算累计薪水和。

3. 解决每个关键问题的代码及讲解

步骤1:筛选在职员工

我们通过to_date = '9999-01-01'条件筛选出在职员工:

where
    to_date = '9999-01-01'
步骤2:计算累计薪水和

我们使用窗口函数SUM计算累计薪水和:

select
    emp_no,
    salary,
    sum(salary) over (
        order by
            emp_no asc
    ) as running_total
from
    salaries
  • SUM(salary) OVER (ORDER BY emp_no ASC) AS running_total:使用窗口函数SUM计算累计薪水和,按员工编号升序排列。

完整代码

select
    emp_no,
    salary,
    sum(salary) over (
        order by
            emp_no asc
    ) as running_total
from
    salaries
where
    to_date = '9999-01-01';