题解 | #统计salary的累计和running_total#

统计salary的累计和running_total

http://www.nowcoder.com/practice/58824cd644ea47d7b2b670c506a159a6

首先通过子查询创建一个带行号的表,这里用row_number()对空值进行order,就可以得到每行的行号。然后限制to_date='9999-01-01',最后从子查询中选出所需字段并用sum(salary)加窗口函数根据行号进行排序算出当前位置的sum。

select emp_no, salary,
sum(salary) over (order by ranking) as running_total
from 
(select * ,row_number() over (order by null) as ranking from salaries) as temp
where to_date = '9999-01-01'

这道题比较坑的点在于没说清楚是否要根据emp_no是否是排好序的,根据给的数据来看是排好序的,就不需要用row_number来加行号,但是我觉得既然题目没提就不能这么假设,所以还是加了行号。

全部评论

相关推荐

07-10 11:08
门头沟学院 Java
Sairus:我注册都注册不了提醒我手机号二次啥的,果然对于人才推得就是快,像我投完了就没回音的
投递京东等公司9个岗位
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务