首页 > 数据库 > mysql教程 > 如何根据特定的 Act 值查找连续行的最小值和最大值?

如何根据特定的 Act 值查找连续行的最小值和最大值?

Linda Hamilton
发布: 2025-01-05 08:44:41
原创
393 人浏览过

How to Find Minimum and Maximum Values for Consecutive Rows Based on Specific Act Values?

识别连续行组进行聚合

问题:
检索 startt 和 startt 的最小值和最大值end 表示特定行为值的连续行。每个唯一的名称定义了不同的行为发生顺序。输入不提供用于行标识的附加列。

方法:

为了在每个名称-行为组中建立行标识,我们使用行号:

row_number() over (partition by name, act order by rn) as act_n
row_number() over (partition by name order by rn) as rn
登录后复制

这些行号使我们能够区分组内的行并识别连续的行为范围

聚合最小值和最大值:

为了找到每个名称-行为组合所需的输出,我们聚合连续行组中的数据。关键的计算是两个行号之间的差异:

rn - act_n diff
登录后复制

这个差异代表每个组内的位置,使我们能够确定连续的范围。

select name, act, min(startt) startt, max(endd) endd
from (
  select
    name,
    act,
    row_number() over (partition by name order by name, startt) rn,
    row_number() over (partition by name, act order by name, startt) act_n,
    startt,
    endd
  from @t
)
group by (rn - act_n), name, act
order by name;
登录后复制

此查询对数据按行号差,提供所需的输出。

以上是如何根据特定的 Act 值查找连续行的最小值和最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板