Sql server 获取一个月内每天的平均时间-SQL Server
我的系统中有这些数据。在Sql server 获取一个月内每天的平均时间-SQL Server,sql-server,Sql Server,我的系统中有这些数据。在NVARCHAR类型中具有持续时间列 | Site | Application | Time Checked | Duration | ------------------------------------------------------ A AAAA 1/11/2016 12:00AM 5.0s B AAAA 1/11/2016 12:00AM 4.0s
NVARCHAR
类型中具有持续时间列
| Site | Application | Time Checked | Duration |
------------------------------------------------------
A AAAA 1/11/2016 12:00AM 5.0s
B AAAA 1/11/2016 12:00AM 4.0s
A BBBB 1/11/2016 12:00AM 5.0s
B BBBB 1/11/2016 12:00AM 4.0s
A AAAA 1/11/2016 12:30AM 5.0s
B AAAA 1/11/2016 12:30AM 4.0s
A BBBB 1/11/2016 12:30AM 5.0s
B BBBB 1/11/2016 12:30AM 4.0s
......................................................
A AAAA 1/11/2016 11:00PM 5.0s
B AAAA 1/11/2016 11:00PM 4.0s
A BBBB 1/11/2016 11:00PM 5.0s
B BBBB 1/11/2016 11:00PM 4.0s
A AAAA 1/11/2016 11:30PM 5.0s
B AAAA 1/11/2016 11:30PM 4.0s
A BBBB 1/11/2016 11:30PM 5.0s
B BBBB 1/11/2016 11:30PM 4.0s
A AAAA 1/12/2016 12:00AM 5.0s
B AAAA 1/12/2016 12:00AM 4.0s
A BBBB 1/12/2016 12:00AM 5.0s
B BBBB 1/12/2016 12:00AM 4.0s
A AAAA 1/12/2016 12:30AM 5.0s
B AAAA 1/12/2016 12:30AM 4.0s
A BBBB 1/12/2016 12:30AM 5.0s
B BBBB 1/12/2016 12:30AM 4.0s
......................................................
A AAAA 1/12/2016 11:00PM 5.0s
B AAAA 1/12/2016 11:00PM 4.0s
A BBBB 1/12/2016 11:00PM 5.0s
B BBBB 1/12/2016 11:00PM 4.0s
A AAAA 1/12/2016 11:30PM 5.0s
B AAAA 1/12/2016 11:30PM 4.0s
A BBBB 1/12/2016 11:30PM 5.0s
B BBBB 1/12/2016 11:30PM 4.0s
每天,我的系统每小时检查持续时间2次(从NN:00 AM/PM开始,下一次是NN:30 AM/PM),我需要获得整个月内不同站点和应用程序每天持续时间的总平均值
像这样
| (Site A) Ave.Duration | Day Time Checked | Application |
5.4 s 1/11/2016 AAAA
5.4 s 1/12/2016 AAAA
5.4 s 1/13/2016 AAAA
..........................................................
5.4 s 1/11/2016 BBBB
5.4 s 1/12/2016 BBBB
5.4 s 1/13/2016 BBBB
..........................................................
有人能帮我吗?我已经在这里讨论了不同的问题
但我还是不太明白
你的答案会很有帮助。试试这个:一个完整的
在VARCHAR列中存储持续时间是个坏主意。为什么不使用INT列?然后看看函数。@TT我知道这是个坏主意。:)谢谢你提醒我。但我真的需要一个输出帮助。链接有很多好的例子。尝试一些东西,如果失败了,你的问题应该包括你尝试了什么。我们可以从那里帮助你。德国劳埃德船级社@谢谢。我试试看,汉克斯兄弟。我会试试这个。顺便说一句,duration列是NVARCHAR类型的。我的文章中有印刷错误。很抱歉无论如何。我尝试了你的代码,它可以在#Test1中创建的表上运行,但是当我在我的数据库上尝试时。“将数据类型varchar转换为数值时出错。”@Elphrian您的第一反应应该是将列更改为包含INT值!为什么要对自己施加压力?如果您想可视化程序中的秒数,请在表示层中添加该
s
。
create table
#test1
(
site char(1),
apl char(10),
timechecked datetime,
duration real,
)
insert into #test1
select
'A','AAAA','1/11/2016 12:00AM',5.0s
union all
select
'B','BBBB','1/11/2016 12:30AM',4.0s
union all
select
'A','BBBB','1/12/2016 12:00AM',5.0s
--nromal method
;with cte
as
(
select duration,convert(varchar(2),datepart(day,timechecked))+'/'+
convert(varchar(2),datepart(month,timechecked))+'/'+
convert(varchar(4),datepart(year,timechecked)) as datetimee,
apl
from
#test1
)
select
avg(duration) as avgduration,
datetimee,apl
from
cte
group by datetimee,apl
---using window functions
;with cte
as
(
select duration,convert(varchar(2),datepart(day,timechecked))+'/'+
convert(varchar(2),datepart(month,timechecked))+'/'+
convert(varchar(4),datepart(year,timechecked)) as datetimee,
apl
from
#test1
)
select
avg(duration) over (partition by datetimee order by datetimee ) as avgduration,
datetimee,
apl
from cte