千家信息网

SQL怎么在时间序列中根据字段变化分组

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关SQL怎么在时间序列中根据字段变化分组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。将排序(一般按时间排)后的数据按某字段
千家信息网最后更新 2026年11月01日SQL怎么在时间序列中根据字段变化分组

今天就跟大家聊聊有关SQL怎么在时间序列中根据字段变化分组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

将排序(一般按时间排)后的数据按某字段变化分组统计,也就是分组字段值与上一行的值比较,如果相同则分到与上一行同组,不同时则创建一个新组。

这个问题用SQL来做很难!

SQL的集合是无序的,早期SQL没有相邻行引用的方法。SQL2003标准中加入了窗口函数,能引用相邻行,但分组仍然非常困难,需要用子查询人为造出分组序号。

举个例子:查询人员某段时间所处城市,并列出起始和结束时间。现有数据库表footmark数据如下:

NAMEFOOTDATECITY
Tom2020-01-02 08:30:00Beijing
Tom2020-01-03 08:30:00Beijing
Tom2020-01-04 13:30:05Beijing
Tom2020-01-04 16:36:00Chengdu
Tom2020-01-05 08:30:00Chengdu
Tom2020-01-06 12:30:00Chengdu
Tom2020-01-06 17:30:25Beijing
Tom2020-01-07 09:30:05Beijing
Tom2020-01-09 16:30:00Beijing
………

要求最终分组统计的结果如下:

NAMECITYSTARTDATEENDDATE
TomBeijing2020-01-02 08:30:002020-01-04 13:30:05
TomChengdu2020-01-04 16:36:002020-01-06 12:30:00
TomBeijing2020-01-06 17:30:252020-01-09 16:30:00

以Oracle为例,用SQL写出来是这样:

WITH A AS

( SELECT NAME, FOOTDATE, CITY,

CASE WHEN CITY=LAG(CITY) OVER (PARTITION BY NAME ORDER BY FOOTDATE) THEN 0 ELSE ROWNUM END FLAG

FROM FOOTMARK ORDER BY NAME, FOOTDATE),

B AS

( SELECT NAME, FOOTDATE, CITY,

MAX(FLAG) OVER (PARTITION BY NAME ORDER BY FOOTDATE) FLAG

FROM A),

C AS

( SELECT NAME, CITY, FLAG,

MIN(FOOTDATE) STARTDATE,

MAX(FOOTDATE) ENDDATE

FROM B

GROUP BY NAME, CITY, FLAG

ORDER BY NAME, FLAG )

SELECT NAME, CITY, STARTDATE, ENDDATE FROM C;

这里的FLAG就是人为造出的分组序号,这种SQL既难写又难懂。

对于这种按顺序分组,如果使用集算器的SPL语言就会简单很多,只需1行代码:

connect("mydb").query("SELECT * FROM FOOTMARK ORDER BY NAME,FOOTDATE").groups@o(NAME,CITY;min(FOOTDATE):STARTDATE,max(FOOTDATE):ENDDATE)

SPL基于有序集合实现,提供了按有序分组的选项@o,解决这个问题非常容易。

SPL提供了等值分组、有序分组、有序条件分组、序号分组、嵌套分组、大数据有序分组、大数据有序条件分组等多种分组方式。

集算器 SPL 是解决 SQL 难题的专业脚本语言,它语法简单,符合自然思维,是天然分步、层次清晰的面向过程计算语言。它采用与数据库无关的统一语法,编写的算法可在数据库间无缝迁移。它是桌面级计算工具,即装即用,配置简单,调试功能完善,可设置断点、单步执行,每步执行结果都可查看。

看完上述内容,你们对SQL怎么在时间序列中根据字段变化分组有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

分组 数据 有序 时间 字段 变化 内容 序号 数据库 语言 序列 时间序列 一行 条件 结果 语法 问题 查询 统计 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 小米移动互联网科技园 华服互联网科技靠谱吗 互联网公司 科技公司 互联网科技英文 亿策互联网科技 互联网科技缩写 互联网 科技服务平台 成都玖崟互联网科技有限公司乐商圈怎么样 常德市电业局互联网科技部 宁夏众和广鑫互联网科技有限公司 互联网还是高科技吗 智腾互联网科技有限公司 晓花互联网科技有限公司网址 辽宁互联网新科技 互联网媒体平台算高科技产业 高科技互联网发展前景如何 雨阳互联网卡科技有限公司 21世纪互联网科技成就 珠海东科互联网科技有限公司 科技互联网产品 智网互联网科技 壕鑫互联网络科技 齐家互联网科技有限公司 互联网科技公司招聘 济南华为互联网科技产业总部基地 哈尔滨新华互联网科技学院 湖南诚度互联网科技有限公司 翼展科技 首家互联网医院 滨湖区互联网智能科技产品有哪些
0