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 字段。

相关推荐
zhengfei61110 分钟前
OrangeHRM RCE 最新漏洞利用 - CVE-2025-66224
数据库
deng-c-f14 分钟前
Linux C/C++ 学习日记(53):原子操作(二):实现shared_ptr
开发语言·c++·学习
中國移动丶移不动16 分钟前
Python MySQL 数据库操作完整示例
数据库·python·mysql
wanghowie24 分钟前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试
Cricyta Sevina31 分钟前
Java IO 基础理论知识笔记
java·开发语言·笔记
木风小助理32 分钟前
B+树何以成为数据库索引的“天选之结构”?
数据库
MyBFuture33 分钟前
C#接口与抽象类:关键区别详解
开发语言·c#·visual studio
7ioik34 分钟前
为什么lnnoDB存储引擎默认使用B+树作为索引结构?
数据库·b树·oracle
晨晖21 小时前
简单排序c语言版
c语言·开发语言
MediaTea1 小时前
大学 Python 编程基础(合集)
开发语言·python