当列相同但行不同时获取日期跨度的平均值

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 语法。谢谢!

如果avgwindow功能支持可以使用,

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