sql >> Database teknologi >  >> RDS >> Mysql

Beregn delta (forskel mellem nuværende og forrige række) mysql-gruppe efter specifik kolonne

Prøv dette:

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)

Hvilket betyder:Slut din tabel til sig selv på user_id'er og tilstødende datetime-indtastninger og udregn forskellen.



  1. Reducerer introduktion af fremmede nøgler til MySQL ydeevnen

  2. SQL Server 2019 nye funktioner

  3. Sådan indlæses attributter fra tilknyttede modeller med sequelize.js

  4. Bedste måde at implementere Client <-> Server <-> Database-arkitektur i en Android-applikation?