当列相同但行不同时获取日期跨度的平均值
Getting an average of span of dates when columns are the same but rows are different
我需要帮助来获得服务电话平均交货时间。所以这就是我目前正在使用的东西。
***name Date_Assigned Date_Completed***
jon 8/17/2017 8/20/2017
jon 9/10/2017 9/11/2017
lucy 8/5/2017 8/5/2017
jon 8/19/2017 9/27/2017
我想了解一下:
1.) What the average service lead time for everyone collectively is.
2.) What the average service lead time per name is.
根据我的尝试,我必须制作日期格式并将其转换为日期时间。但似乎无法找到正确的解决方案!谁能帮我吗???我正在使用 SQL management Studio 或 t-sql 语法。谢谢!
如果avg
window功能支持可以使用,
select distinct name
,avg(datediff(day,date_assigned,date_completed)) over(partition by name) as avg_per_name
,avg(datediff(day,date_assigned,date_completed)) over() as avg_overall
from tbl
一种方法是:
select name,
avg ( datediff(day, date_assigned, date_completed) )
from t
group by grouping sets ( (name), () );
这会将总体平均值放在单独的行中,其中 NULL
值为 name
。
-- Setup table
SET NOCOUNT ON;
declare @temp table
(
Name varchar(50),
Date_Assigned datetime,
Date_Completed datetime
)
INSERT INTO @temp
SELECT
'jon' , '8/17/2017' ,'8/20/2017' UNION SELECT ALL
'jon' , '9/10/2017' ,'9/11/2017' UNION SELECT ALL
'lucy', '8/5/2017' ,'8/5/2017' UNION SELECT ALL
'jon' , '8/19/2017' ,'9/27/2017'
select name, AVG(datediff(day, Date_Assigned, Date_Completed)) from @temp group by name
union select 'ALL', AVG(datediff(day, Date_Assigned, Date_Completed)) from @temp
我需要帮助来获得服务电话平均交货时间。所以这就是我目前正在使用的东西。
***name Date_Assigned Date_Completed***
jon 8/17/2017 8/20/2017
jon 9/10/2017 9/11/2017
lucy 8/5/2017 8/5/2017
jon 8/19/2017 9/27/2017
我想了解一下:
1.) What the average service lead time for everyone collectively is.
2.) What the average service lead time per name is.
根据我的尝试,我必须制作日期格式并将其转换为日期时间。但似乎无法找到正确的解决方案!谁能帮我吗???我正在使用 SQL management Studio 或 t-sql 语法。谢谢!
如果avg
window功能支持可以使用,
select distinct name
,avg(datediff(day,date_assigned,date_completed)) over(partition by name) as avg_per_name
,avg(datediff(day,date_assigned,date_completed)) over() as avg_overall
from tbl
一种方法是:
select name,
avg ( datediff(day, date_assigned, date_completed) )
from t
group by grouping sets ( (name), () );
这会将总体平均值放在单独的行中,其中 NULL
值为 name
。
-- Setup table
SET NOCOUNT ON;
declare @temp table
(
Name varchar(50),
Date_Assigned datetime,
Date_Completed datetime
)
INSERT INTO @temp
SELECT
'jon' , '8/17/2017' ,'8/20/2017' UNION SELECT ALL
'jon' , '9/10/2017' ,'9/11/2017' UNION SELECT ALL
'lucy', '8/5/2017' ,'8/5/2017' UNION SELECT ALL
'jon' , '8/19/2017' ,'9/27/2017'
select name, AVG(datediff(day, Date_Assigned, Date_Completed)) from @temp group by name
union select 'ALL', AVG(datediff(day, Date_Assigned, Date_Completed)) from @temp