簡體   English   中英

您如何找到客戶的平均datediff?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM