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

相关推荐
时光话6 分钟前
Lua:第1-4部分 语言基础
开发语言·lua
计算机毕设定制辅导-无忧学长9 分钟前
TDengine 数据写入优化:协议选择与批量操作(一)
网络·数据库·tdengine
Mr.洛 白10 分钟前
OpenEuler/CentOS一键部署OpenGauss数据库教程(脚本+视频)
数据库·opengauss·gaussdb·国产数据库安装·安装脚本
欧宸雅12 分钟前
Clojure语言的持续集成
开发语言·后端·golang
计算机毕设定制辅导-无忧学长15 分钟前
TDengine 快速上手:安装部署与基础 SQL 实践(一)
大数据·sql·tdengine
炬火初现24 分钟前
redis-cpp-cpp如何使用lua脚本
数据库·redis·lua
hxung25 分钟前
Redis 数据类型详解
数据库·redis·缓存
胡斌附体27 分钟前
qt tcpsocket编程遇到的并发问题
开发语言·网络·qt·并发编程·tcpsocket
学c真好玩1 小时前
4.3python操作ppt
开发语言·python·powerpoint
数小模.1 小时前
MATLAB中plot函数的详细参数表
开发语言·matlab