当前位置: 首页 > article >正文

SQL,生成指定时间间隔内的事件次序号

MSSQL 数据库某表有三个字段:账号、字符串类型的日期和时间。

Account_NumberFuelPurchase_DateFuel_TOD
192024-04-0307:02:02 AM
192024-04-0307:02:41 AM
192024-04-0302:58:49 PM
192024-04-0307:58:49 PM
192024-04-0502:58:49 PM
192024-04-0502:59:31 PM
192024-04-1711:56:13 PM
202024-04-1711:59:13 PM
192024-04-1812:15:13 AM
192024-04-1802:56:13 PM
202024-04-1807:41:55 AM
202024-04-1807:41:55 PM
202024-04-1807:56:55 PM
192024-04-1907:41:55 AM
192024-04-1907:42:20 AM
192024-04-1908:41:20 AM

现在要新增一个分组的序号列 Seq,当某个账号在一个小时内发生新事件时,Seq+1;如果一个小时后才发生新事件,则重置 Seq 为 1。

Account_NumberFuelPurchase_DateFuel_TODSeq
192024-04-0307:02:02 AM1
192024-04-0307:02:41 AM2
192024-04-0302:58:49 PM1
192024-04-0307:58:49 PM1
192024-04-0502:58:49 PM1
192024-04-0502:59:31 PM2
192024-04-1711:56:13 PM1
192024-04-1812:15:13 AM2
192024-04-1802:56:13 PM1
192024-04-1907:41:55 AM1
192024-04-1907:42:20 AM2
192024-04-1908:41:20 AM3
202024-04-1711:59:13 PM1
202024-04-1807:41:55 AM1
202024-04-1807:41:55 PM1
202024-04-1807:56:55 PM2

编写SPL代码

 A
1=mssql.query("select *,cast(FuelPurchase_Date as datetime) + cast(Fuel_TOD as datetime) as DT from tb order by Account_Number,DT”)
2

=A1.new(Account_Number,FuelPurchase_Date,Fuel_TOD,

if(Account_Number==Account_Number[-1] && interval@s(Fuel_DT[-1],Fuel_DT)<3600,Seq[-1]+1,1):Seq)

A1:通过JDBC查询数据库,拼出日期时间类型的计算列DT,并按账号和DT排序。

A2:新建二维表,增加新计算列Seq。当前记录的账号与上一条记录相同,且时间间隔一小时内时,Seq+1;否则将Seq重置为1。[-1]表示相对位置的上一条记录。

SPL已开源免费,欢迎前往乾学院社区了解更多!

SPL源码地址

免费下载


http://www.kler.cn/a/448962.html

相关文章:

  • 重拾设计模式--外观模式
  • c# 实现一个简单的异常日志记录(异常迭代+分片+定时清理)+AOP Rougamo全局注入
  • Unity 6 Preview(预览版)新增功能
  • Nuc9 Truenas 和 Macmini4组雷电网桥 上传速度异常 1Mbp/s 解决
  • 【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
  • iterm2 focus时灰色蒙层出现的解决办法
  • Hadoop完全分布式环境部署
  • malloc 分配大堆块(128KB)的一次探索
  • **Adversarial Demonstration Attacks on Large Language Models**
  • 【Leetcode】855. 考场就座
  • 小程序 - 模拟时钟
  • Echarts连接数据库,实时绘制图表详解
  • 微服务拆分 示例:黑马商城拆分商品服务模块
  • YOLOv9-0.1部分代码阅读笔记-dataloaders.py
  • C语言(一)——初识C语言
  • Django 视图中使用 Redis 缓存优化查询性能
  • 初识C语言之二维数组(下)
  • npm install vue-router失败解决办法
  • 4.2V单节锂电池充电电路(TP4056)、USB与锂电池切换电路分享
  • Github优质项目推荐(第九期)
  • QT_Demo(1)之实现多线程实现简单的电脑摄像头视频流开关
  • 叉车作业如何确认安全距离——UWB测距防撞系统的应用
  • Kubernetes APF(API 优先级和公平调度)简介
  • guava本地缓存+自定义线程工厂和线程池
  • Day 15:Spring 框架基础
  • Sass变量的妙用:提升CSS开发效率与可维护性