【发布时间】:2024-01-14 20:30:01
【问题描述】:
我有一个 SQL 表,它以 15 分钟的间隔存储一个变量(唯一键)的数据。该值可以是每个时间间隔的任何数字,包括零。想要根据唯一键将值分组到零。
就像如果值是 0,0,100,900,30,0,0,0,400,900,100,0,0,0,0,400,500,0,0 随着时间的推移想要添加值直到零(比如总和为 1030、1400、900、. .. ) 针对每个唯一键,并计算值不为零的实例数(如在本例中为 3 等)。
我们在 SQL (mariaDB) 中存储了与时间(15 分钟间隔)相关的数据。现在这个数据决定了一个实体的性能,它是秒(就像 15 分钟间隔内的秒数一样,它存在可以取 0 到 900 之间的任何值的问题)。现在我们可以在任何时间间隔内对它们进行分组并轻松绘制受影响的总秒数
Parameter_health 数据库包含两个表 --
- Parameter_detail 表包含针对参数的固定数据信息
- Parameter_uasvalue 表包含每 15 分钟间隔的不可用秒 (UAS) 与该参数的时间对比
我使用了如下 SQL 查询,它是组合在一起的总 UAS 的总和,但我想将它们分组到下一个零值,并计算此类事件的总实例(不是非零事件,而是总事件当它不为零时)对于任何间隔。
在 Grafana 中使用以下查询
SELECT parameter_detail.system, parameter_detail.parameter_label, sum(parameter_uasvalue.uas) as 'Total UAS'
FROM parameter_health.parameter_uasvalue left join parameter_health.parameter_detail on parameter_detail.id=parameter_uasvalue.id
WHERE $__timeFilter(parameter_uasvalue.time) and parameter_uasvalue.uas != '-1' and parameter_uasvalue.uas !=' 0'
GROUP BY parameter_detail.system, parameter_detail.parameter_label
想要将每个值分组直到零(求和),然后在 sql 查询中对任何时间间隔的此类实例进行计数。 parameter_uasvalue表的表结构如下图
id time uas
Parameter-Unique Value1 15/11/2021 0:00 0
Parameter-Unique Value1 15/11/2021 0:15 100
Parameter-Unique Value1 15/11/2021 0:30 900
Parameter-Unique Value1 15/11/2021 0:45 30
Parameter-Unique Value1 15/11/2021 1:00 0
Parameter-Unique Value1 15/11/2021 1:15 0
Parameter-Unique Value1 15/11/2021 1:30 400
Parameter-Unique Value1 15/11/2021 1:45 900
Parameter-Unique Value1 15/11/2021 2:00 0
Parameter-Unique Value1 15/11/2021 2:15 0
Parameter-Unique Value1 15/11/2021 2:30 0
Parameter-Unique Value1 15/11/2021 2:45 400
Parameter-Unique Value1 15/11/2021 3:00 500
Parameter-Unique Value1 15/11/2021 3:15 0
Parameter-Unique Value1 15/11/2021 3:30 0
Parameter-Unique Value1 15/11/2021 3:45 0
【问题讨论】:
-
请以表格形式分享您的表格结构和样本值。
-
@KaziMohammadAliNur 使用您要求的详细信息编辑了我的查询,希望对您有所帮助
-
谢谢。如果您可以上传文本格式的值,那就太好了,这样我就可以重新创建场景。
-
@KaziMohammadAliNur 谢谢,我已经添加了。另一个表是参数的其他详细信息,通常是固定信息,我们在查询中加入它们
标签: sql group-by mariadb cumulative-sum gaps-and-islands