#mysql
#mysql
Вопрос:
У меня есть таблица с данными, как показано ниже
user_id name Size lgdate
1 alpha 1.7 11-03-2019 14:00
1 alpha 0.9 11-03-2019 18:00
1 alpha 1 11-03-2019 22:00
1 alpha 3 12-03-2019 14:00
1 alpha 3.5 12-03-2019 18:00
1 alpha 3.8 12-03-2019 22:00
1 alpha 6 13-03-2019 14:00
1 alpha 6.4 13-03-2019 18:00
1 alpha 7 13-03-2019 22:00
2 beta 4 11-03-2019 14:00
2 beta 5 11-03-2019 18:00
2 beta 5.5 11-03-2019 22:00
2 beta 6 12-03-2019 14:00
2 beta 6.2 12-03-2019 18:00
2 beta 6.4 12-03-2019 22:00
2 beta 6.6 13-03-2019 14:00
2 beta 6.8 13-03-2019 18:00
2 beta 6.9 13-03-2019 22:00
У меня есть запрос, который выдает мне результат в виде последней записи для каждой даты и для каждого пользователя до последних 30 дней с текущей даты
запрос —
select t1.*
from USER_SIZE_VIEW t1,
(select usr_id,date(lgdate), max(lgdate) as max_date
from USER_SIZE_VIEW
group by usr_id,date(lgdate) ) t2
where t1.lgdate = t2.max_date
and t1.lgdate >= DATE(NOW()) - INTERVAL 30 DAY
текущий o / p-
это имеет только одну запись (последнюю запись) в день на пользователя
user_id name Size lgdate
1 alpha 1 11-03-2019 22:00
1 alpha 3 12-03-2019 22:00
1 alpha 6 13-03-2019 22:00
1 alpha 7 14-03-2019 22:00
1 alpha 9 15-03-2019 22:00
1 alpha 10.2 16-03-2019 22:00
1 alpha 13 17-03-2019 22:00
1 alpha 17 18-03-2019 22:00
1 alpha 22 19-03-2019 22:00
1 alpha 23 20-03-2019 22:00
1 alpha 25 21-03-2019 22:00
2 beta 4 11-03-2019 22:00
2 beta 6 12-03-2019 22:00
2 beta 6.6 13-03-2019 22:00
2 beta 7.8 14-03-2019 22:00
2 beta 8 15-03-2019 22:00
2 beta 9 16-03-2019 22:00
2 beta 9 17-03-2019 22:00
2 beta 10 18-03-2019 22:00
2 beta 10 19-03-2019 22:00
Я хочу рассчитать процентный рост столбца size и добавить результат в новый столбец, чтобы показать процентный рост
Результат, который я ожидаю —
user_id name Size timestamp Size growth(%)
1 alpha 1 11-03-2019 22:00 0
1 alpha 3 12-03-2019 22:00 200
1 alpha 6 13-03-2019 22:00 100
1 alpha 7 14-03-2019 22:00 16
1 alpha 9 15-03-2019 22:00 28
1 alpha 10.2 16-03-2019 22:00 13
1 alpha 13 17-03-2019 22:00 27
1 alpha 17 18-03-2019 22:00 30
1 alpha 22 19-03-2019 22:00 29
1 alpha 23 20-03-2019 22:00 4
1 alpha 25 21-03-2019 22:00 8.6
2 beta 4 11-03-2019 22:00 0
2 beta 6 12-03-2019 22:00 50
2 beta 6.6 13-03-2019 22:00 10
2 beta 7.8 14-03-2019 22:00 18.18
2 beta 8 15-03-2019 22:00 2.56
2 beta 9 16-03-2019 22:00 12.5
2 beta 9 17-03-2019 22:00 0
2 beta 10 18-03-2019 22:00 11
2 beta 10 19-03-2019 22:00 0
Редактировать —
Я хочу повторно использовать приведенный выше запрос и создать новый столбец с вычислением.
-Спасибо
Комментарии:
1. Какая версия MySQL? 5.x или 8.x? В 8.x вы можете использовать
LAG()
функцию.2. @TheImpaler — это равно 5.x