代码之家  ›  专栏  ›  技术社区  ›  Nicolás Abuchar Moya

直到某个时间点的列的SQL平均值

sql
  •  -3
  • Nicolás Abuchar Moya  · 技术社区  · 5 年前

    假设我有一个表,其中包含每个客户的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
    
    2 回复  |  直到 5 年前
        1
  •  0
  •   Gordon Linoff    5 年前

    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;
    
        2
  •  0
  •   Himanshu    5 年前

    也许,由于您没有提到dbms,我尝试了几乎所有dbms的方法,比如via 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 )