【问题标题】:calculate the average value in a certain time interval计算一定时间间隔内的平均值
【发布时间】:2019-08-01 18:56:41
【问题描述】:

我有一个表,其中每 30 分钟写入一次值 我想计算几天内某个时间段的平均值。

CREATE TABLE [dbo].[#TABLE_1](
[numreq] [int] NULL,
[rangetime] [nvarchar](300) NULL
) ON [PRIMARY]

insert into [dbo].[#TABLE_1] values('2','2019-03-10 12:00:00.000')
insert into [dbo].[#TABLE_1] values('3','2019-03-10 12:30:00.000')
insert into [dbo].[#TABLE_1] values('4','2019-03-10 13:00:00.000')
insert into [dbo].[#TABLE_1] values('5','2019-03-10 13:30:00.000')
insert into [dbo].[#TABLE_1] values('6','2019-03-11 12:00:00.000')
insert into [dbo].[#TABLE_1] values('7','2019-03-11 12:30:00.000')
insert into [dbo].[#TABLE_1] values('8','2019-03-11 13:00:00.000')
insert into [dbo].[#TABLE_1] values('9','2019-03-11 13:30:00.000')

我写了一个 sql 查询,但它没有给出想要的结果

select avg([numreq]),[rangetime]
from [dbo].[#TABLE_1]
group by [rangetime]

我想要得到的结果:

numreq	rangetime
4		12:00
5		12:30
6		13:00
7		13:30

【问题讨论】:

  • 按日期时间字段的时间部分选择和分组。请参阅标记的重复项以了解如何执行此操作。

标签: sql sql-server tsql average


【解决方案1】:

您可以使用cast() 仅解析时间:

select avg(numreq), cast(rangetime as time) as rangetime
from [#TABLE_1]  t
group by cast(rangetime as time);

如果rangetime 没有所需的类型,那么您可以使用substring()

substring(rangetime, 12, len(rangetime))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多