如何解决SQL查询每15分钟比较一次值并每小时显示一次结果
以下是您需要的查询和有效的解决方案注意:我将时间范围更改为24小时
;with SourceData(HourTime, Value, RowNum)
as
(
select
datepart(hh, UTCTime) HourTime,
Value,
row_number() over (partition by datepart(hh, UTCTime) order by UTCTime) RowNum
from foo
union
select
datepart(hh, UTCTime) - 1 HourTime,
Value,
5
from foo
where datepart(mi, UTCTime) = 0
)
select cast(A.HourTime as varchar) + ':00' UTCTime, sum(case when A.Value = B.Value then 1 else 0 end) ConstantValues
from SourceData A
inner join SourceData B on A.HourTime = B.HourTime and
(B.RowNum = (A.RowNum - 1))
group by cast(A.HourTime as varchar) + ':00'
解决方法
我有2列的表格。UTCTime和值。UTCTime以15分钟为增量。我想要一个查询,该查询将在一个小时的跨度内将值与先前的值进行比较,并显示0到4之间的值,具体取决于这些值是否恒定。换句话说,每15分钟增加一个条目,并且该值可以是恒定的,因此我只需要每小时检查一次每个值是否与前一个值相同。
例如
+---------|-------+
| UTCTime | Value |
------------------|
| 12:00 | 18.2 |
| 12:15 | 87.3 |
| 12:30 | 55.91 |
| 12:45 | 55.91 |
| 1:00 | 37.3 |
| 1:15 | 47.3 |
| 1:30 | 47.3 |
| 1:45 | 47.3 |
| 2:00 | 37.3 |
+---------|-------+
在这种情况下,我只想要一个将12:45的值与12:30以及12:30到12:15进行比较的查询,依此类推。由于我们仅在一小时的时间范围内进行比较,因此常数值必须在0到4之间(O没有常数值,1就是上面示例中的常数)
查询应显示:
+----------+----------------+
| UTCTime | ConstantValues |
----------------------------|
| 12:00 | 1 |
| 1:00 | 2 |
+----------|----------------+
我只想提到我是SQL编程的新手。谢谢你。
在这里查看SQL提琴
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。