postgresql - 查找连续行的最小值/最大值
问题描述
我有一张这样的桌子:
name | value
------------------
alpha | 90
beta | 105
beta | 44
beta | 56
gamma | 22
beta | 111
beta | 99
我想在连续的行中找到最小值和最大值,输出应该是这样的:
name | min | max
------------------------
alpha | 90 | 90
beta | 44 | 105
gamma | 22 | 22
beta | 99 | 111
有人可以帮我解决这个问题吗?
解决方案
假设您有id
定义 的列consecutive rows
,那么您可以
with t (id, name , value ) as (
values
(1, 'alpha',90),
(2, 'beta',105),
(3,'beta',44),
(4,'beta',56),
(5,'gamma',22),
(6,'beta',111),
(7,'beta',99)
)
select name, min(value), max(value) from (
select id, name, value,
row_number() over(order by id) -
row_number() over(partition by name order by id) as grp
from t
) tt
group by name, grp
order by min(id)
推荐阅读
- python - 如何在 Python 的 for 循环中使用已定义的字符串
- python - 使用均匀分布近似高斯方差(重要性采样)
- list - 如何在 O(1) 中使用 set(i, ele)、add()、remove() 方法制作列表?
- php - 如何从 DB Wordpress 获取 slug 值
- javascript - 为什么第二个 switchMap 在订阅时会执行数百次?
- android - 将位于android资源原始文件夹中的html文件加载到webview中
- django - 自定义 django 管理门户文本字段的大小
- javascript - React 使用 useEffect 异步加载数据
- python - 任何人都知道如何使用 ffmpeg 和 python 将视频编码为 0 和 1 的字节
- c# - 如何使用 Postman 测试 jwt 身份验证