Postgres SQL Group By直到下一行不同

obl0702

我在postgres中有以下数据:

index | item  |
------+--------
  10  | aaa   |
  20  | aaa   |
  30  | bbb   |
  40  | aaa   |
  50  | aaa   |

我想将其分组并获得最小值和最大值。但是,它只应分组直到下一行是不同的项目。

期望:

indexMin | indexMax | item    |
---------+----------+----------
  10     | 20       | aaa     |
  30     | 30       | bbb     |
  40     | 50       | aaa     |
  

可以指导一下吗?

专线小巴

这是一个空白问题,您希望将“相邻”行分组在一起。在这里,最简单的方法是使用行号之间的差异来识别组:

select min(idx) min_idx, max(idx) max_idx, item
from (
    select 
        t.*,
        row_number() over(order by idx) rn1,
        row_number() over(partition by item order by idx) rn2
    from mytable t
) t
group by item, rn1 - rn2
order by min(idx)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Postgres SQL GROUP BY没有跳转行?

来自分类Dev

Postgres下/上一行SQL查询

来自分类Dev

在Postgres中使用GROUP BY查询中的上一行的值更新行

来自分类Dev

Postgres SQL: column must appear in the GROUP BY clause or be used in an aggregate function

来自分类Dev

从GROUP BY语句在Postgres SQL中创建JSON值

来自分类Dev

Postgres计算GROUP BY中的唯一结果

来自分类Dev

Postgres下一个/上一个行SQL查询

来自分类Dev

SQL禁用重复的行(Postgres)

来自分类Dev

postgres sql:获得统一的行

来自分类Dev

SQL GROUP BY一列的不同值

来自分类Dev

使用Postgres SQL从上一行设置多个列值

来自分类Dev

在SQL(Postgres)中动态将前一行值添加到当前行值

来自分类Dev

计算 Postgres SQL 中当前行和上一行的值

来自分类Dev

SQL Server:将行与下一行合并

来自分类Dev

SQL Group By-不同的颜色

来自分类Dev

SQL group by 替换不同的值

来自分类Dev

Postgres GROUP BY数组列

来自分类Dev

Postgres GROUP BY数组列

来自分类Dev

SQL while循环根据名称查找下一行

来自分类Dev

SQL Plus列溢出到下一行

来自分类Dev

使用GROUP BY时强制Oracle SQL查询返回至少一行

来自分类Dev

SQL COUNT(*),带有GROUP BY,最后一行包含总数

来自分类Dev

使用group_by在Oracle sql查询中产生一行

来自分类Dev

如何在oracle sql中使用group by获得每一行的排名

来自分类Dev

在 t/sql 中使用 group by 将多行合并为一行

来自分类Dev

Postgres SELECT 行加上带有条件的下一行

来自分类Dev

如何根据上一个ID在Postgres中找到下一行?

来自分类Dev

SQL检查一行的值是否大于下一行

来自分类Dev

在SQL中将上一行的结束日期作为下一行的开始日期

Related 相关文章

热门标签

归档