Sql server TSQL:交易之间天数的标准偏差

Sql server TSQL:交易之间天数的标准偏差,sql-server,tsql,datediff,standard-deviation,Sql Server,Tsql,Datediff,Standard Deviation,我需要使用TSQL来计算客户交易间隔天数的标准偏差。该表有两列,CustomerId和TranDate。每个客户至少有3个唯一的交易日期。例如,客户abc的交易日期可能为1/1/13、1/4/13、1/10/13和1/20/13。交易之间的天数将是3、6和10,因此代码应该返回客户abc的标准偏差2.867 对于任意数量的交易,如何以按客户分组的方式对其进行编码?根据我提供的示例,这并不能给出正确的答案。DATEDIFF应该在两个连续的交易日期之间,而不是1900年1月1日。确定需要首先计算差异

我需要使用TSQL来计算客户交易间隔天数的标准偏差。该表有两列,CustomerId和TranDate。每个客户至少有3个唯一的交易日期。例如,客户abc的交易日期可能为1/1/13、1/4/13、1/10/13和1/20/13。交易之间的天数将是3、6和10,因此代码应该返回客户abc的标准偏差2.867


对于任意数量的交易,如何以按客户分组的方式对其进行编码?

根据我提供的示例,这并不能给出正确的答案。DATEDIFF应该在两个连续的交易日期之间,而不是1900年1月1日。确定需要首先计算差异。你尝试过什么?这就是问题所在-我找不到一个可比较的例子,即可以识别连续交易、计算交易间隔天数、将数据点添加到表中、然后移动到下一个连续日期等的代码,然后在达到第一个客户的最长日期时移动到下一个客户。从这里开始,stdev部分就足够简单了。那么你应该只问最难的部分。只记录了行号()。我能够修改它(使用STDEVP,因为我正在处理总体值)以获得我所需要的。谢谢你的帮助。
select id, stdev(DATEDIFF ( dd , '1/1/1900' , enddate ))
from table 
group by id 



with dateOrder as 
(SELECT [fieldID], [value], 
        row_number() over (partition by [fieldID] order by [value]) as row
   FROM [docSVdate])
select do1.fieldID, stdev(datediff(dd, do1.value, do2.value))
  from dateOrder as do1
  join dateOrder as do2
    on do1.fieldID = do2.fieldID 
   and do2.row = do1.row + 1
 group by do1.fieldID