分组顺序重复值 sqlite
Posted
技术标签:
【中文标题】分组顺序重复值 sqlite【英文标题】:Group sequential repeated values sqlite 【发布时间】:2020-09-16 19:30:36 【问题描述】:我有按顺序重复的数据..
A
A
A
B
B
B
A
A
A
我需要像这样对它们进行分组
A
B
A
使用 sqlite 的最佳方法是什么?
【问题讨论】:
【参考方案1】:假设您有一个定义行顺序的列,例如id
,您可以使用窗口函数解决这个间隙和孤岛问题:
select col, count(*) cnt, min(id) first_id, max(id) last_id
from (
select t.*,
row_number() over(order by id) rn1,
row_number() over(partition by col order by id) rn2
from mytable t
) t
group by col, rn1 - rn2
order by min(id)
我在结果集中添加了几列,以提供有关每个组内容的更多信息。
【讨论】:
【参考方案2】:如果你定义了一个列来定义行的顺序,比如id
,你可以使用窗口函数LEAD()
:
select col
from (
select col, lead(col, 1, '') over (order by id) next_col
from tablename
)
where col <> next_col
请参阅demo。 结果:
| col |
| --- |
| A |
| B |
| A |
【讨论】:
以上是关于分组顺序重复值 sqlite的主要内容,如果未能解决你的问题,请参考以下文章