1 Star 0 Fork 146

一世宿敌 / 数据库SQL实战

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
60.统计salary的累计和running_total.md 1.18 KB
一键复制 编辑 原始数据 按行查看 历史
xuthus 提交于 2019-08-12 23:23 . add:all

统计salary的累计和running_total

题目描述

按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。 具体结果如下Demo展示。

CREATE TABLE `salaries` ( 
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

答案

select s2.emp_no,s2.salary,sum(s1.salary) running_total from (select emp_no,salary from salaries where to_date = '9999-01-01') s1 inner join (select emp_no,salary from salaries where to_date = '9999-01-01') s2 on s1.emp_no <= s2.emp_no group by s2.emp_no

题解

1、获得当前员工的工资情况s1

select emp_no,salary from salaries where to_date = '9999-01-01'

2、连接当前员工信息s2,筛选出emp_no小于当前用户的所有员工信息

s1 inner join (select emp_no,salary from salaries where to_date = '9999-01-01') s2 on s1.emp_no <= s2.emp_no

3、根据emp_no进行分组,对salary列进行求和

select s2.emp_no,s2.salary,sum(s1.salary) running_total from s1 inner join s2 on s1.emp_no <= s2.emp_no group by s2.emp_no
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
SQL
1
https://gitee.com/yueyue_heart/Database-SQL-Actual-Combat.git
git@gitee.com:yueyue_heart/Database-SQL-Actual-Combat.git
yueyue_heart
Database-SQL-Actual-Combat
数据库SQL实战
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891