SQL60 统计salary的累计和running_total

SQL CASE WHEN实战指南:解决多条件分组、动态打标与漏斗统计 CASE WHEN是SQL中实现条件逻辑的核心语法,本质是在查询执行阶段对每行数据进行实时判断与标记,突破WHERE单条件过滤和GROUP BY固定字段分组的限制。其原理基于向量化计算,在一次数据扫描中完成多路分流,显著优于子查询或临时表的嵌套循环开销。技术价值体现在动态口径聚合、用户分层打标、异常值清洗及条件化JOIN等关键场景,广泛应用于电商漏斗分析、SaaS用户运营、游戏流失预警等工程实践。本文聚焦真实业务问题,解析如何用CASE WHEN替代低效写法,规避NULL陷阱、顺序错位与兼容性雷区。 阅读详情

文章目录

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 BY 和 ORDER BY 都可以省略,有 ORDER BY时候表示累计统计。
但是对于排序窗口函数,ORDER BY 不可省略!!

Oracle11g下载与安装(windows) 一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明 阅读详情

相关推荐

SwinIR实战:从环境搭建到模型训练的全流程解析

本文提供了SwinIR超分辨率模型从零开始的全流程实战指南。详细解析了基于PyTorch和Anaconda的环境搭建、数据准备与配置文件修改、训练启动与常见错误排查(如张量尺寸不匹配),以及模型评估方法,帮助读者高效部署并训练SwinIR模型。

weixin_28224217的博客 319

数据库SQL实战 --59.统计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_dat...

我在阴山下 1133

影像组学分析流程中,图像分割前要做的事(图像预处理)

在InputVolume中无法找到自己想要重采样的序列,这时可以检查一下序列的Volume type是不是MRMLMulti。这时,Volume type将由MRMLMulti改为Scaler,随后即可在3D slicer中完成Resample Scaler Volume。2.1、重采样:通过3Dslicer中的Resample Scaler Volume实现。具体设置参数:spacing(1,1,1),Interpolation选择Bspline。2、图像预处理:重采样和标准化。

weixin_45011313的博客 3724

为什么结果是空集?

select * from salaries where from_date= (select min(from_date) from salaries GROUP BY emp_no) salaries表 INSERT INTO salaries VALUES(10001,60117,'1986-06-26','1987-06-26'); INSERT INTO salaries VA...

weixin_30241919的博客 289

ABAP BOM展开避坑指南:CS_BOM_EXPL_MAT_V2函数参数配置详解

本文深入解析了SAP ABAP开发中用于物料清单展开的核心函数CS_BOM_EXPL_MAT_V2。针对其复杂的参数配置,如CAPID、STLAN、DATUV和MEHRS,提供了详细的避坑指南和最佳实践,帮助开发者避免数据错误与性能陷阱,实现高效、准确的BOM多层展开。

pea55的博客 855

别再拿空气标定法糊弄了!手把手教你搞定水下相机标定(附Python代码)

本文详细解析水下相机标定的关键技术,揭示传统空气标定法失效原因,并提供基于单视点模型(SVP)的完整Python解决方案。通过折射效应分析、标定板设计优化和代码实战演示,帮助读者掌握水下标定核心方法,有效提升水下视觉系统测量精度。

weixin_30530939的博客 208

SQL之Running Total

SQL之Running Total简介

kiwi_coder 3781

Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题

本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。

weixin_30839881的博客 459

牛客网数据库2-按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。

按照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` da...

a1272899331的博客 617

SSE(Server-Sent Events)完整使用示例

本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。

oscar999的专栏 750

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 111

SQL实战60.统计salary的累计和running_total

题目 解答 注意思考方式 select s1.emp_no,s1.salary, (select sum(s2.salary) from salaries as s2 where s2.emp_no<=s1.emp_no and s2.to_date = '9999-01-01') as running_total from salaries as s1 where s1.to_date = '9999-01-01'

m0_48005088的博客 274

[QMT量化交易小白入门]-六十九、ETF动量评分策略,历史年化收益率107%

C . bar_date } 跳过') returnC . bar_date } 跳过') returnC . bar_date } 跳过') return作用:如果当前不是回测模式且不是最后一根K线,则记录日志并跳过本次任务。这是为了避免在实时交易中对尚未完成的数据进行处理。

木头大左的博客 2229

SQL练习60:统计salary的累计和running_total

SQL练习60:统计salary的累计和running_total 题目链接:牛客网 题目描述 按照salary的累计和running_total,其中running_total为前N个当前( to_date = '9999-01-01')员工的salary累计和,其他以此类推。 具体结果如下Demo展示。 CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT

向日葵的专属太阳 352

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

牛客网数据库SQL实战60—— 统计salary的累计和running_total

牛客网数据库SQL实战60—— 统计salary的累计和running_total 题目描述 按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。 具体结果如下Demo展示。。 CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NO...

sunbocong的博客 827

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

牛客网刷题笔记-SQL60 统计salary的累计和running_total

SQL60 统计salary的累计和running_total 按照salary的累计和running_total,其中running_total为前N个当前( to_date = ‘9999-01-01’)员工的salary累计和,其他以此类推。 具体结果如下Demo展示。 CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date`

qq_39211004的博客 152

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据库SQL实践60:统计salary的累计和running_total

思路: 观察可知running_total是小于或等于当前emp_no工资的总和。 select s.emp_no,s.salary, (select sum(ns.salary) from salaries ns where ns.emp_no &lt;=s.emp_no and ns.to_date='9999-01-01') as running_total from salaries...

weixin_43160613的博客 227

牛客SQL练习-60-统计salary的累计和running_total,其中running_total为前N个当前( to_date = ‘9999-01-01‘)员工的salary累计和

SELECT a.emp_no, a.salary, sum( b.salary ) FROM salaries AS a, salaries AS b WHERE b.emp_no <= a.emp_no AND a.to_date = '9999-01-01' AND b.to_date = '9999-01-01' GROUP BY a.emp_no

hmyqwe的博客 278

60. 统计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_da...

chenchenchenchenying的博客 588

数据库SQL实战(牛客网真题)51~60题

数据库SQL实战(牛客网真题)51~60题

YouMing_Li的博客 1045

mysql牛客网网刷题函数总结57-

SQL57 使用含有关键字exists查找未分配具体部门的员工的所有信息。 用exists: select * from employees e where not exists (select emp_no from dept_emp d where d.emp_no = e.emp_no); 不用exists: select * from employees e left join dept_emp d on d.emp_no = e.emp_no where d.emp_no is null; SQ

乐观的阿锡的博客 288

员工管理-批量删除和修改、全局异常处理器和员工信息统计Ecahrs-数据转换格式

java@Mapper场景使用方式单表查询 / 字段名和属性名一致resultType+ 开启驼峰映射字段名和属性名不一致resultMap或@Results一对多 / 一对一 / 集合嵌套必须使用resultMap核心思想SQL 负责多表关联查出“扁平化”的数据,resultMap负责将扁平数据“重组”为带有集合的层次化对象。定义全局异常处理器非常简单,就是定义一个类,在类上加上一个注解@RestControllerAdvice,加上这个注解就代表我们定义了一个全局异常处理器。

牛逼666 516

Oracle SQL实战:高效查询与性能优化技巧

SQL作为关系型数据库的核心查询语言,其优化技巧直接影响系统性能。Oracle数据库特有的分析函数、递归查询等高级特性,能够高效处理复杂业务场景。通过合理使用MERGE替代UPDATE、利用FORALL加速批量操作等技术手段,可显著提升DML效率。在生产环境中,结合执行计划分析、统计信息收集等优化方法,能有效解决80%的性能瓶颈问题。本文分享的Oracle分页查询、空间管理等实用脚本,特别适合中高级开发者处理实际业务中的数据处理与系统调优需求。

cuibinmo3519的博客 390

Oracle(60)什么是表聚合(Table Aggregation)?

表聚合(Table Aggregation)是通过聚合函数对表中的数据进行汇总计算的过程。常见的聚合函数包括COUNTSUMAVGMIN和MAX。这些函数用于对一组值进行计算,并返回一个单一的值,常用于统计、分析和报告数据。通过使用GROUP BY子句,可以对数据进行分组,并对每组数据进行聚合计算。

qq_43012298的博客 760

Oracle - 统计信息的收集,让优化器生成最优执行计划

文章摘要 本文深入探讨Oracle数据库统计信息的重要性及优化器决策机制。统计信息是优化器生成高效执行计划的关键依据,涵盖表级、列级、索引和系统统计等多维度数据。过时或缺失的统计信息会导致严重性能问题,如错误选择索引或全表扫描。 文章重点解析现代统计信息收集方法,推荐使用DBMS_STATS包的AUTO_SAMPLE_SIZE智能采样策略,并对比了估算、全量计算等不同收集方式的适用场景。通过生产级脚本示例,展示了如何配置并发收集、直方图分析等高级特性,强调统计信息需与业务SLA需求紧密结合,而非机械式维护。

千淘万漉虽辛苦,吹尽狂沙始到金 1万+
上一篇: SQL61 给出employees表中排名为奇数行的first_name
下一篇: SQL59 获取有奖金的员工相关信息
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值