【问题标题】:Getting an average of span of dates when columns are the same but rows are different当列相同但行不同时获取平均日期跨度
【发布时间】:2017-08-17 19:16:32
【问题描述】:

我需要帮助获取服务电话的平均交货时间。所以这就是我目前正在使用的。

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

【问题讨论】:

  • 假设这些数据已经在一个表中是否安全,或者这只是一个文本文件?
  • 数据已在表中。从 .csv 批量插入。
  • 作为日期,还是作为 varchars?
  • 日期,最近将它们转换为日期时间以尝试满足格式准则。

标签: sql sql-server average datetime-format


【解决方案1】:

如果支持avg窗口功能可以使用,

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

【讨论】:

  • 非常感谢,这对您有很大帮助!正是我需要的!
【解决方案2】:

一种方法是:

select name,
       avg ( datediff(day, date_assigned, date_completed) )
from t
group by grouping sets ( (name), () );

这会将整体平均值放在单独的一行中,NULL 的值为name

【讨论】:

  • 想念 AVG,戈登。不过解决方案很好。
【解决方案3】:
-- 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 

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 2017-11-24
  • 1970-01-01
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多