@AibekAS

Как получить разницу между двумя полями в одной таблице между соседними датами?

select u1.id, (u1.score - u2.score) as score from `users` as `u1`
inner join `users` as `u2` on `u1`.`earned_at` = DATE_SUB(u2.earned_at, INTERVAL 1 DAY)
where `u1`.`earned_at` = '2018-01-13'

В базе `earned_at` = '2018-01-13' всего 21 записей. Но в результате приходит 420 записей.
UPD: проблема запроса, что он должен возвращать 21 записей(в данном примере). А разницу вычисляет верно.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
BojackHorseman
@BojackHorseman
...в творческом отпуске...
я думаю, что не хватает связки по id пользователя

on `u1`.`earned_at` = DATE_SUB(u2.earned_at, INTERVAL 1 DAY) AND u1.id=u2.id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
code for food, caviar preferably
я делаю вот так:
SET @tt = '0000-00-00';
SELECT `id`, `ti`, @tt as `ti2`, TIMEDIFF(`ti`, @tt) , @tt:=`ti` FROM `tm` WHERE 1


тут я считаю разницу между датами, но механизм, полагаю, понятен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
17 дек. 2018, в 01:36
700 руб./в час
16 дек. 2018, в 22:06
700 руб./в час
16 дек. 2018, в 21:48
1000 руб./за проект