@zxcursed

Как получить разницу значений по значению ячейки?

Есть таблица логов (кратко):
user_id | action_type | value | datetime
1 | value_add | 20 | 2022-12-31 10:00:00
2 | value_add | 50 | 2022-12-31 11:00:00
3 | value_remove | 200 | 2022-12-30 09:00:00
3 | value_remove | 250 | 2022-12-30 14:00:00
4| value_add | 300 | 2022-12-30 15:00:00
5| value_remove | 100 | 2022-12-31 22:00:00
Есть действия получения (value_add) и потери денег (value_remove), как мне получить разницу между ними по дням?
Чтобы в конечном итоге получить:
difference | date
-30 | 2022-12-31
- 150 | 2022-12-30
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
с помощью if или case switch преврати value_remove/add в знак -/+ перед value, теперь делай sum по получившемуся значению и group by по дням (дату в номер дня преврати, например с помощью day_of_year или бери только день, месяц, год .. как тебе удобно)
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
select 
    date(`datetime`), 
    sum(case when  `action_type` = 'value_add' then `value` else -`value` end) `total`
from t 
group by date(`datetime`)


https://sqlize.online/sql/mysql80/69ed74cbba45e3b4...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы