[英]How do you find the average datediff by customer?
我有以下數據:
CustomerID OrderDate
1 2011-02-16
1 2011-04-20
2 2011-04-25
2 2011-10-24
2 2011-11-14
如何找到每個客戶的平均DATEDIFF? 我想要的結果將是CustomerID和他們的訂單之間日期的平均差。 我非常感謝您的幫助。 這讓我陷了幾個月。 先感謝您。
附加說明**由於正在使用服務器,因此無法使用滯后功能。
在SQLServer 2012中,您可以對將Binaya Regmi的查詢更改為
with cte as (
SELECT CustomerID, OrderDate,
LAG(OrderDate) OVER (PARTITION BY CustomerID
ORDER BY CustomerID, OrderDate) AS PrevDate
FROM T)
Select customerid, avg(datediff(d, prevdate, orderdate)) average
From cte
Group By customerid
未優化但主要使用標准sql的查詢(因為請求者未聲明其RDBMS)是
SELECT customerid, avg(datediff(d,prevdate, OrderDate)) average
FROM (SELECT ext.customerid, ext.OrderDate, max(prevdate) prevdate
FROM orders ext
INNER JOIN (SELECT customerid, orderdate prevdate
FROM orders) sub
ON ext.customerid = sub.customerid
AND ext.OrderDate > sub.prevdate
GROUP BY ext.customerid, orderdate) a
GROUP BY customerid
假設T
是您的表,並且您希望使用day
平均日期差,以下是SQL Server 2012中的代碼:
with cte as (
SELECT CustomerID, OrderDate,
LAG(OrderDate) OVER (PARTITION BY CustomerID
ORDER BY CustomerID, OrderDate) AS PrevDate
FROM T)
select customerid, avg(datediff(d, prevdate, orderdate )) as AvgDay
from cte group by customerid;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.