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)

演示:

您需要有某种定义“连续行”的方法。如何确保行按照您在第一个表中描述的方式排序?还有其他我们可以订购的栏目吗?