SQL60 统计salary的累计和running_total

本文讲解了如何使用SQL窗口函数解决SQL60中关于计算员工薪水累计和running_total的问题,通过实例展示了如何根据雇员编号和离职日期进行累加,并强调了ORDERBY在窗口函数中的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

1. 题目

  • 题目来源:SQL60 统计salary的累计和running_total

  • 题目描述
    按照salary的累计和running_total,其中running_total为前N个当前( to_date = ‘9999-01-01’)员工的salary累计和,其他以此类推。

  • 一张表

    # salaries
    10001|60117|1986-06-26|1987-06-26
    10001|62102|1987-06-26|1988-06-25
    10001|66074|1988-06-25|1989-06-25
    10001|66596|1989-06-25|1990-06-25
    10001|66961|1990-06-25|1991-06-25
    
  • 所需结果

    emp_no 	salary 	running_total
    10001 	88958 	88958
    10002 	72527 	161485
    10003 	43311 	204796
    10004 	74057 	278853
    10005 	94692 	373545
    10006 	43311 	416856
    10007 	88070 	504926
    10009 	95409 	600335
    10010 	94409 	694744
    10011 	25828 	720572 
    

2. 题解

直接使用窗口函数即可:

SELECT emp_no, 
       salary,
       SUM(salary) OVER(ORDER BY emp_no) running_total
 FROM salaries
 WHERE to_date = '9999-01-01'
 

注意,在语法上,聚合函数的窗口函数,PARTITION BYORDER BY 都可以省略,有 ORDER BY时候表示累计统计。
但是对于排序窗口函数,ORDER BY 不可省略!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值