@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 записей(в данном примере). А разницу вычисляет верно.
  • Вопрос задан
  • 112 просмотров
Решения вопроса 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
Похожие вопросы
КА "ВЛАСТЕЛИН" Москва
от 152 000 до 172 000 руб.
Badoo Development Москва
от 140 000 до 180 000 руб.
SaveTime Москва
от 140 000 до 200 000 руб.
24 сент. 2018, в 06:56
500 руб./в час
24 сент. 2018, в 06:41
1000 руб./за проект
24 сент. 2018, в 05:38
400 руб./в час