SQL, 有终止条件的多次累计计算

复制代码
MSSQL数据库的data表存储了多人上电梯的情况,turn表示进电梯的顺序。电梯最大承重1000公斤,每趟能上的人数有限,超重的人要等下一趟。

|---------|--------|------|
| name | weight | turn |
| Alice | 250 | 1 |
| Bob | 170 | 2 |
| Alex | 350 | 3 |
| John | 400 | 4 |
| Winston | 500 | 5 |
| Marie | 200 | 6 |

复制代码
请计算每趟电梯最后一个进入的人的名字的列表。

|---------|
| Alex |
| Winston |
| Marie |

编写SPL代码:

|---|---------------------------------------------------------|
| | A |
| 1 | =sqlServer1.query("select * from data order by turn") |
| 2 | >cum=0 |
| 3 | =A1.group@i(if( (cum+=weight)>1000, cum=weight, null)) |
| 4 | =A3.(~.m(-1).name) |

A1:用SQL取数,按turn排序。

A2:给累计变量设初值

A3:按每趟电梯分组。当累计值大于 1000 时,开始新的分组,并将累计值重置为当前乘客体重。

A4:取每组的最后一条记录的 name 字段。

相关推荐
roman_日积跬步-终至千里14 分钟前
【Java 并发-面试】从线程基础到企业级开发的知识点概况
java·开发语言
云中飞鸿14 分钟前
VS2015安装后,安装QT59,之后安装qt-vsaddin-msvc2015-2.4.3.vsix 文件失败问题!
开发语言·qt
m0_7482331718 分钟前
C与C++:底层编程的六大核心共性
java·开发语言
u01092727120 分钟前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
沐知全栈开发20 分钟前
HTTP Content-Type
开发语言
l1t23 分钟前
DeekSeek辅助总结PostgreSQL Mistakes and How to Avoid Them 的一个例子
数据库·postgresql
一切尽在,你来30 分钟前
C++多线程教程-1.2.2 C++标准库并发组件的设计理念
开发语言·c++
醉风塘35 分钟前
JDBC批量操作终极指南:PreparedStatement批处理与事务性能优化实战
数据库·性能优化
2401_8384725139 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python