sql - SQL查询中的滚动最小值/最大值?
问题描述
数据库引擎是 SQLite3。这是一个简单的表:
创建表 T(ID 整数、日期字符串、数值数字);
-- T 行:
id date value
1 2020-01-01 11
2 2020-01-01 23
3 2020-01-01 32
4 2020-01-01 41
5 2020-01-01 57
6 2020-01-01 62
如何创建滚动最小值/最大值?说第3期:
id date val min3 max3
1 2020-01-01 11 11 11
2 2020-01-01 23 11 11
3 2020-01-01 32 11 32
4 2020-01-01 41 23 41
5 2020-01-01 57 32 57
5 2020-01-01 62 41 62
我一直得到 min 11 Max 62 因为我不知道如何做滚动 min/max
解决方案
您可以使用窗口函数:
select t.*,
min(val) over (order by date rows between 2 preceding and current row) min3,
max(val) over (order by date rows between 2 preceding and current row) max3
from t;
推荐阅读
- spring-boot - 在 Spring 框架中使用 timeout 属性有什么好处?
- python - 使用 Dataframe 时如何防止 TypeError
- sql - 在指定日期之间向表 Oracle 添加缺失记录
- powershell - 使用变量将文件从一个位置复制到多个使用 Powershell
- c++ - 使用 std::cin 将字符串输入 while 循环后,控制台输出大量乱码
- macos - al和dl有区别吗?
- oracle - 如何立即打印sqlplus输出
- flutter - 颤振图像选择器不提供图像路径
- delphi - DELPHI“调用的对象已与其客户端断开连接”
- ios - xcode11 - 在 ios 13 中请求位置服务的授权