当子窗口具有递增值时如何增加父组编号?

Posted

技术标签:

【中文标题】当子窗口具有递增值时如何增加父组编号?【英文标题】:How to increment a parent group number when the child window has incrementing values? 【发布时间】:2022-01-24 03:17:31 【问题描述】:

我正在使用 Spark SQL 3.2.0

请参阅DB Fiddle 链接,了解我的数据集和预期结果的简化示例。

抽象地说,我有一个包含一系列相关事件的数据集,这些事件可以按时间顺序和事件编号进行分组。当按时间和事件编号排序时,每次事件编号重置为 1 时,您都在查看一组新事件。

我了解如何使用row_number()dense_rank() 来增加event_group_number 其中sub_event_number = 1,但我不确定如何使sub_event_number > 1 所在的行采用正确的event_group_number

我目前正在做以下事情:

case 
    when sub_event_number = 1 and is_event_type
    then row_number() over (partition by context_id, event_id, sub_event_number order by is_event_type asc, start_time asc) - 1
    else null
end as event_group_number

我将不胜感激,我很乐意回答任何问题。

【问题讨论】:

【参考方案1】:

您似乎正在寻找累积条件和:

SELECT context_id,
       event_id,
       start_time,
       NULLIF(
          SUM(CASE WHEN sub_event_number = 1 THEN 1 ELSE 0 END) OVER(
                         PARTITION BY context_id, event_id 
                         ORDER BY is_event_type, start_time) - 1,
          0
       ) AS event_group_number
FROM   foobar
ORDER  BY context_id, event_id, is_event_type, start_time  

db-fiddle

【讨论】:

以上是关于当子窗口具有递增值时如何增加父组编号?的主要内容,如果未能解决你的问题,请参考以下文章

c# 子窗口如何将信息传至父窗口

MFC - 当最大化子窗口的标题很长时,MDI 主框架标题被截断

WPF window 子窗口反馈效果(拉动/渐变)

仅当子容器具有内容时,如何将类添加到特定的父元素

数组674. 最长连续递增序列

arcgis设计的点如何自动编号