2017-09-04 14 views
0

고객을위한 주문 데이터 테이블이 있으며 평균을 찾으려합니다. 고객이 첫 번째 거래를 한 후 두 번째 거래를하는 데 필요한 일 수, 두 번째에서 세 번째로 이동하는 요일 등이 있습니다. 예 테이블 : advacne에서두 주문 간의 평균 시간

User ID Rank Time 
111  1 01/08/17 
111  2 05/08/17 
111  3 08/08/17 
111  4 10/08/17 
111  5 15/08/17 
111  6 20/08/17 
112  1 07/08/17 
112  2 08/08/17 
112  3 09/08/17 
112  4 10/08/17 

감사

+0

당신은 또한 우리에게 예상 된 결과를 표시 할 수 있습니까? 또한 문제를 해결하기 위해 지금까지 아무 것도 시도하지 않았습니까? –

+0

따라서'time' 값들 사이의 평균 일수를 두 줄로 예상하십니까? 어떤 DBMS를 사용하고 있습니까? –

답변

0

은 첫 데이트를 촬영 한 다음 이전에 각 날짜 비교 :

set @d := (select date from yourTable where userid=111 and rank=1); 

select rank, datediff(date, @d), @d:=date FROM yourTable; 

당신은 이런 식으로 뭔가를 얻을 것이다 :

1 0 2017-08-01 
2 4 2017-08-05 
3 3 2017-08-08 
4 3 2017-08-11 
5 6 2017-08-17 

그리고 약간의 검색어를 추가하십시오.

set @d := (select date from yourTable where userid=111 and rank=1); 

select avg(days) from 
    (select rank, datediff(date, @d) days, @d:=date FROM yourTable) td; 

그리고 그 결과는 다음과 같습니다

avg(days) 
3.2000