You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL值变化递增逻辑与SUM开窗函数计算原理疑问

你使用的是带ORDER BY子句的SUM()窗口函数,它在指定分区内默认执行逐行累积求和,计算范围是分区内从第一行到当前行的所有gap值的和。

我们先把你内层查询得到的gap值逐行列出来,再对应计算grp:

序号persondayflaggapgrp计算逻辑grp结果
1person1day1Y1仅当前行,和为11
2person1day2Y0前1行gap和 + 当前gap = 1+0=11
3person1day3Y0前2行gap和 + 当前gap = 1+0=11
4person1day4N1前3行gap和 + 当前gap = 1+1=22
5person1day5N0前4行gap和 + 当前gap = 2+0=22
6person1day6Y1前5行gap和 + 当前gap = 2+1=33
7person1day7Y0前6行gap和 + 当前gap = 3+0=33
8person1day8Y0前7行gap和 + 当前gap = 3+0=33

这种写法是SQL中解决「连续数据分组(孤岛问题)」的标准方案:相同grp值的行就是连续的、flag取值相同的一组数据,后续你可以直接按person和grp分组,统计每组的开始/结束时间、连续天数等指标。

内容的提问来源于stack exchange,提问作者FreshTransistor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:45:03