2014-04-07 1 views
0

나는 다음과 같은 데이터를 가지고 : 나는 각 고객의 평균 DATEDIFF를 어떻게 찾을 수 있습니까고객 별 평균 datediff는 어떻게 구합니까?

CustomerID OrderDate 
1   2011-02-16 
1   2011-04-20 
2   2011-04-25 
2   2011-10-24 
2   2011-11-14 

를? 내가 원하는 결과는 고객 ID 및 주문 간의 평균 날짜 차이 일 것입니다. 도움에 정말 감사드립니다. 이것은 나를 몇 달 동안 붙이게했다. 미리 감사드립니다.

추가 정보 ** 사용중인 서버 때문에 지연 기능을 사용할 수 없습니다. SQLServer에 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; 
+0

어떤 DBMS를 사용하고 있습니까? SQL Server, Oracle, MySQL 등? –

+0

무엇의 차이점은 무엇입니까? 너무 많은 조합이 있습니까? 예를 들어, CustID = 2는 3 개의 diff 조합이 있습니다. – SCV

답변

2

당신이 Binaya Regmi의 쿼리를 변경 지연을 분할 할 수 있습니다

+0

파티션에 내 오류가 있습니다. 고마워요. 당신이 내 표를 얻었습니다. –

1

T 가정하면 2012 SQL Server의 코드 테이블 그리고 당신은 다음, day의 날짜의 평균 차이를 원하는

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 

쿼리, 비 최적화,하지만 (요청자 자신의 RDBMS를 언급하지 않은 것처럼) 대부분 표준 SQL을 사용은

입니다
관련 문제