栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何对连续的行进行分组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何对连续的行进行分组?

如果我正确理解发布的问题,那么您的CTE会有效地确定所有警报的时间段(或时间间隔)。您的最终select子句将实际的警报信息与您的警报间隔结合在一起。问题的一部分是,如果您的警报长时间处于活动状态(我假设比您的警报扫描周期长),那么警报系统将继续记录“扫描的警报”条目,这实际上会导致划分活动警报。如果您具有SQL
Server
2012或更高版本,则比较容易确定警报事件是否被拆分。您只需要检查警报的结束时间是否等于相同警报类型的下一个警报的开始时间。您可以在2012年使用LAG窗口功能来实现这一目标。
下一步是生成一个ID,您可以对警报进行分组,以便可以合并拆分事件。这是通过SUM OVER子句实现的。以下示例显示了如何实现此目的:

;WITH AlarmTimeBucketsAS (    SELECT       EventStart.Ev_Comment AS StartDateTime      ,MIN(COALESCE (EventEnd.Ev_Comment, EventStart.Ev_Comment)) AS EndDateTime     ,EventStart.Ev_Message As Machine    FROM         A EventStart     INNER JOIN   A EventEnd ON EventStart.Ev_Comment < EventEnd.Ev_Comment AND EventStart.Ev_Custom1 = 'Alarms Scanned' AND EventEnd.Ev_Custom1 = 'Alarms Scanned' AND EventStart.Ev_Message = EventEnd.Ev_Message    GROUP BY     EventStart.Ev_Message, EventStart.Ev_Comment),AlarmsByTimeBucketAS(    SELECt      AlarmTimeBuckets.Machine    ,AlarmTimeBuckets.StartDateTime    ,AlarmTimeBuckets.EndDateTime     ,Alarm.Ev_Custom1 AS Alarm    ,(      CASE         WHEN LAG(AlarmTimeBuckets.EndDateTime, 1, NULL) OVER (PARTITION BY Alarm.Ev_Custom1,Alarm.Ev_Message ORDER BY AlarmTimeBuckets.StartDateTime) = AlarmTimeBuckets.StartDateTime THEN 0         ELSE 1      END     ) AS IsNewEvent    FROM       A Alarm     INNER JOIN AlarmTimeBuckets  ON Alarm.Ev_Message = AlarmTimeBuckets.Machine AND  Alarm.Ev_Comment = AlarmTimeBuckets.StartDateTime    WHERe     (Alarm.Ev_Custom1 <> 'Alarms Scanned')),AlarmsByGroupingIDAS(    SELECt   Machine ,StartDateTime ,EndDateTime ,Alarm ,SUM(IsNewEvent) OVER (ORDER BY Machine, Alarm, StartDateTime) AS GroupingID    FROM    AlarmsByTimeBucket)SELECt       MAX(Machine) AS Machine ,MIN(StartDateTime) AS StartDateTime ,MAX(EndDateTime) AS EndDateTime ,MAX(Alarm) AS AlarmFROM        AlarmsByGroupingIDGROUP BY    GroupingIDORDER BY    StartDateTime


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号