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

相关推荐
Li_yizYa1 分钟前
谈谈Java集合中的fail-fast和fail-safe
java·开发语言
十五年专注C++开发2 分钟前
CMake进阶:模块模式示例FindOpenCL.cmake详解
开发语言·c++·cmake·跨平台编译
蜜汁小强3 分钟前
macOS 上管理不同版本的python
开发语言·python·macos
肥硕之虎4 分钟前
从原理到实操:php://filter 伪协议玩转文件包含漏洞
开发语言·网络安全·php
风叶悠然8 分钟前
vue3中数据的pinia的使用
前端·javascript·数据库
a努力。9 分钟前
中国电网Java面试被问:RPC序列化的协议升级和向后兼容
java·开发语言·elasticsearch·面试·职场和发展·rpc·jenkins
csbysj202014 分钟前
Bootstrap4 徽章(Badges)
开发语言
码农水水16 分钟前
得物Java面试被问:大规模数据的分布式排序和聚合
java·开发语言·spring boot·分布式·面试·php·wpf
大鳥27 分钟前
Hive on Spark SQL 性能优化权威指南
hive·sql·spark
JosieBook27 分钟前
【数据库】2026国产时序数据库新格局与金仓的多模突围
数据库·时序数据库