sql >> データベース >  >> RDS >> Mysql

特定の列によるデルタ(現在の行と前の行の差)mysqlグループを計算します

    これを試してください:

    drop table a;
    create table a( id integer not null primary key, d datetime, user_id integer );
    insert into a values (1,now() + interval 0 day, 1 );
    insert into a values (2,now() + interval 1 day, 1 );
    insert into a values (3,now() + interval 2 day, 1 );
    insert into a values (4,now() + interval 0 day, 2 );
    insert into a values (5,now() + interval 1 day, 2 );
    insert into a values (6,now() + interval 2 day, 2 );
    
    select t1.user_id, t1.d, t2.d, datediff(t2.d,t1.d)
    from a t1, a t2
    where t1.user_id=t2.user_id
    and t2.d = (select min(d) from a t3 where t1.user_id=t3.user_id and t3.d > t1.d)
    

    つまり、user_idsと隣接する日時エントリでテーブルをそれ自体に結合し、差を計算します。



    1. PostgreSQLで重複する日付範囲を検索する

    2. Oracle-ORA-06502:PL / SQL:数値または値のエラー(DBMS_OUTPUT)

    3. IDで数百万行を削除する最良の方法

    4. PDOとbindParamを使用して配列をmysqlに挿入する方法は?