MySql 8.0
У меня есть набор данных, который выглядит примерно так:
user_id transaction_time item_price
1 2020-01-01 13:00:00 100
1 2020-01-01 18:00:00 100
1 2020-01-01 19:00:00 100
1 2020-01-01 23:00:00 100
1 2020-01-02 04:00:00 100
1 2020-01-02 09:00:00 100
Обычно, если я хочу найти сумму (цену) для дневной цены, я бы сделал
select date(transcation_time) as dt
, sum(item_price) as sum_price
from table
group by date(transaction_time)
, который выведет
dt sum_price
2020-01-01 400
2020-01-02 200
Но вместо 2020-01-01
суммирования цены от 2020-01-01 00:00:00
до 2020-01-01 23:59:59
я хочу суммировать цены от 2020-01-01 18:00:00
до 2020-01-02 06:00:00
, что будет помечено как 2020-01-01
так что
2020-01-01 sums prices from 2020-01-01 18:00:00 ~ 2020-01-02 06:00:00
2020-01-02 sums prices from 2020-01-02 18:00:00 ~ 2020-01-03 06:00:00
2020-01-03 sums prices from 2020-01-03 18:00:00 ~ 2020-01-04 06:00:00
и так далее ...
тогда полученное агрегирование будет выглядеть так:
dt sum_price
2020-01-01 500
2020-01-02 100
обратите внимание, что первая строка не добавляется, так как 13:00:00 не в 18:00:00 ~ 06: 00: 00
Как я могу это сделать?