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

相关推荐
敲代码的瓦龙几秒前
Android?基础UI控件!!!
java·开发语言
Hical_W1 分钟前
用 Hical + MySQL 5 分钟搭建 CRUD API(C++20 协程版)
数据库·mysql·c++20
Hesionberger3 分钟前
LeetCode 78:子集生成全攻略
java·开发语言·数据结构·python·算法·leetcode·职场和发展
bzmK1DTbd3 分钟前
Swagger API文档:Java RESTful服务的自动生成
java·开发语言·restful
AIMath~5 分钟前
agent上下文和模型的上下文区别
数据库
与遨游于天地14 分钟前
分布式锁从Redis到Redisson的演进
数据库·redis·分布式
身如柳絮随风扬21 分钟前
Java对象在计算机中的执行原理:从JVM内存模型到对象创建全过程
java·开发语言·jvm
河西石头23 分钟前
听AI的血的教训!PPOCRLabel部署与PyQt5的安装避坑-百分百成功!
开发语言·人工智能·python·pyqt5安装·ppocrlabel的部署
野生技术架构师28 分钟前
我总结了这份2026最新版Java面试题库(背完这一套就够了)
java·开发语言·面试