Postgresql 查找连续行上的最小/最大值
我有一张这样的桌子:Postgresql 查找连续行上的最小/最大值,postgresql,Postgresql,我有一张这样的桌子: name |值 ------------------ 阿尔法| 90 β| 105 β| 44 β| 56 伽马| 22 β| 111 β| 99 我想在连续的行中查找最小值和最大值,输出应如下所示: name | min | max ------------------------ 阿尔法| 90 | 90 贝塔| 44 | 105 伽马| 22 | 22 贝塔| 99 | 111 有人能帮我吗?假设您有定义连续行的id列,那么您可以 with t (id, n
name |值
------------------
阿尔法| 90
β| 105
β| 44
β| 56
伽马| 22
β| 111
β| 99
我想在连续的行中查找最小值和最大值,输出应如下所示:
name | min | max
------------------------
阿尔法| 90 | 90
贝塔| 44 | 105
伽马| 22 | 22
贝塔| 99 | 111
有人能帮我吗?假设您有定义
连续行的id
列,那么您可以
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)
演示:您需要有某种定义“连续行”的方法。如何确保行按照您在第一个表中描述的方式排序?还有其他我们可以订购的栏目吗?