我需要使用 TSQL 来计算客户交易之间天数的标准差。该表有两列,CustomerId 和 TranDate。每个客户至少有 3 个唯一的交易日期。例如,客户 abc 的交易日期可能是 1/1/13、1/4/13、1/10/13 和 1/20/13。交易之间的天数将是 3、6 和 10 - 因此代码应返回客户 abc 的标准偏差 2.867。
对于任意数量的交易,如何以按客户分组的方式对其进行编码?
我需要使用 TSQL 来计算客户交易之间天数的标准差。该表有两列,CustomerId 和 TranDate。每个客户至少有 3 个唯一的交易日期。例如,客户 abc 的交易日期可能是 1/1/13、1/4/13、1/10/13 和 1/20/13。交易之间的天数将是 3、6 和 10 - 因此代码应返回客户 abc 的标准偏差 2.867。
对于任意数量的交易,如何以按客户分组的方式对其进行编码?
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