sql >> Databáze >  >> RDS >> Mysql

Vypočítejte delta (rozdíl aktuálního a předchozího řádku) mysql skupiny podle konkrétního sloupce

Zkuste toto:

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)

Což znamená:připojte svou tabulku k sobě na základě user_id a sousedních položek data a času a vypočítejte rozdíl.



  1. MySQL vybere řádky, kde datum není mezi datem

  2. Skript Google Apps pro export tabulek do mySQL se spouští na více souborech

  3. 6 problémových dotazů, které masivně zpomalují vaši databázi

  4. Mohu použít VARCHAR jako PRIMÁRNÍ KLÍČ?