sql - 在 Oracle 中满足条件时重置运行总和
问题描述
我的数据结构如下:
Timestamp | Hour | Count
--------------------------
20190801 01 | 1 | 10
20190801 02 | 2 | 20
20190801 03 | 3 | 10
20190801 04 | 4 | 5
20190801 05 | 5 | 15
20190801 06 | 6 | 10
20190802 01 | 1 | 5
20190802 02 | 2 | 20
20190802 03 | 3 | 5
20190802 04 | 4 | 15
20190802 05 | 5 | 20
20190802 06 | 6 | 5
20190803 01 | 1 | 30
我正在尝试创建一个 SQL 查询,该查询将计算运行中的 SUM,但在小时为 1 时重置。结果应如下所示:
Hour | Count | SUM
------------------
1 | 10 | 10
2 | 20 | 30
3 | 10 | 40
4 | 5 | 45
5 | 15 | 60
6 | 10 | 70
1 | 5 | 5 /* RESET */
2 | 20 | 25
3 | 5 | 30
4 | 15 | 45
5 | 20 | 65
6 | 5 | 70
1 | 30 | 30 /* RESET */
解决方案
您可以使用sum()
分析功能:
select t."Hour","Count",
sum("Count") over (partition by substr("Timestamp",1,8) order by "Timestamp") as "sum"
from t
推荐阅读
- syntax - OCaml 中的磅 (#) 含义
- python - 积分的密度图。TypeError:只有长度为 1 的数组可以转换为 Python 标量
- java - Intent put extra 始终为空
- php - 注册表单php显示空字段
- c++ - MinGW 找不到 -lglfw3_d
- sql - 篮子分析错误
- java - Swing中的FlowLayout不会移动到下一行
- jquery - 弹出窗口内按钮的单击事件不起作用
- javascript - 构建 FaceBook Bot:发布请求导致 400 错误,并且节点类型(页面)上不存在字段(消息)
- flutter - 为什么文本小部件中的“\ t”会创建一个新行?