这道题考察对于联合查询的掌握程度:
一般而言,我们使用联表查询时都是取等值关系进行联合,但联表实际上可以有多种联合的方式,比如这道题使用的是自连接,联合方式为s1.emp_no >= s2.emp_no,也即是s1的emp_no字段比s2.emp_no的值要大时都会联合到s1的emp_no上面,这样一条s1的emp_no就对应了多个s2.emp_no,再按照s1.emp_no来分组,求得sum(s2.salary)就能得到前N个当前员工的累计薪资(有点啰嗦)。具体sql如下:

select s1.emp_no,
       s1.salary,
       sum(s2.salary) as running_total

from   salaries s1,
       salaries s2

where  s1.to_date = '9999-01-01'
       and s2.to_date = '9999-01-01'
       and s1.emp_no >= s2.emp_no

group by s1.emp_no
order by s1.emp_no asc;