gpt4 book ai didi

mysql - 基于两列按相邻行分组

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:10 25 4
gpt4 key购买 nike

假设我有一个这样的表:

id     col1    col2
---------------------
1 35 A
2 40 B
3 39 B
4 39 B
5 39 B
6 40 B
7 39 B
8 39 B
9 40 B
10 40 C
11 35 C

我怎样才能让它有这样的结果:

id     col1    col2
---------------------
1 35 A
2 40 B
3 39 B
6 40 B
7 39 B
9 40 B
10 40 C
11 35 C

我要group by col1在相邻行中具有相同的值,同时在 col2 中也具有相同的组(col1 中的值 id:9id:10 无法分组,因为它具有不同的 col2 值)

任何帮助将不胜感激,谢谢!

最佳答案

关键思想是获取相邻行的分组标识符。问题是:对于应该组合在一起的行,行的哪些特征是不变的?

好吧,这是一个:在 col1col2 中具有不同值的先前行数(基于 id)是组中的所有行都相同。

您可以将此观察转化为每一行的度量(使用相关子查询)。剩下的只是聚合:

select min(id) as id, col1, col2, count(*) as NumInGroup
from (select t.*,
(select count(*)
from t t2
where t2.id < t.id and (t2.col1 <> t.col1 or t2.col2 <> t.col2)
) as grp
from t
) t
group by grp, col1, col2;

演示:db-fiddle

注意:这在处理少量数据时效果很好,但扩展性不是特别好。

关于mysql - 基于两列按相邻行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com