我想计算每个用户从所有先前的贷款中取消贷款所花费的平均时间,以及他在特定时间点之前所获得的贷款数量。
假设我有这个表,其中包含每个客户的ID,贷款的日期以及用户取消贷款的时间。
ID date time
1 17/7/2018 8
1 7/8/2018 18
2 21/12/2018 0
2 22/12/2018 5
2 31/12/2018 5
我希望得到这个结果
ID date AVG(time) n_loans
1 17/7/2018 8 0
1 7/8/2018 13 1
2 21/12/2018 0 0
2 22/12/2018 2.5 1
2 31/12/2018 3.33 2
答案 0 :(得分:0)
您可以使用运行平均值:
select id, date, time,
avg(time) over (partition by id order by date) as avg_time,
row_number() over (partition by id order by date) as n_loans
from t;
答案 1 :(得分:0)
也许,因为您没有提到dbms,所以我通常对所有dbms方式(例如通过join尝试)
Select * from (
( Select id,date,count(*)
from table group by id,date) t1
JOIN
(SELECT AVG(TIME)
FROM TABLE
GROUP BY ID ) t2
ON
t1.ID =t2.id )