首页 > 解决方案 > 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

标签: sqlsqlite

解决方案


您可以使用窗口函数:

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;

推荐阅读