Как узнать максимальную дату каждого месяца? Я не знаю, что я делаю не так, но данные дублируются на основе моих результатов.
Вот таблица.
history table
|ID | from_range | to_range | price | main_id
1 2019-09-01 00:00:00 2019-09-15 00:00:00 5 1
2 2019-09-16 00:00:00 2019-09-30 00:00:00 10 1
3 2019-10-01 00:00:00 2019-10-15 00:00:00 15 1
4 2019-10-16 00:00:00 2019-10-19 00:00:00 20 1
5 2019-10-20 00:00:00 0000-00-00 00:00:00 25 1
current_usage table
id main_id total_usage date_created
1 1 10 2019-09-01
2 1 10 2019-09-02
3 1 10 2019-09-03
4 1 10 2019-09-04
5 1 10 2019-09-05
6 1 10 2019-09-06
7 1 20 2019-09-07
8 1 5 2019-09-08
9 1 5 2019-09-09
10 1 10 2019-09-10
11 1 10 2019-09-15
12 1 10 2019-09-16
13 1 10 2019-09-17
14 1 10 2019-09-18
15 1 10 2019-09-19
16 1 10 2019-09-20
17 1 20 2019-09-25
18 1 5 2019-09-26
19 1 5 2019-09-27
20 1 10 2019-09-30
21 1 10 2019-10-01
22 1 10 2019-10-02
23 1 10 2019-10-03
24 1 10 2019-10-10
25 1 10 2019-10-11
26 1 10 2019-10-12
27 1 10 2019-10-18
28 1 20 2019-10-20
29 1 5 2019-10-21
30 1 5 2019-10-22
31 1 10 2019-10-23
поэтому в моей history_table я получил date_range за каждый месяц, это зависит от того, сколько раз пользователь изменяет стоимость за каждый день.
так что в основном
вывод должен быть таким
id price range_date total_usage
1 5 2019-09-01 - 2019-09-15 SUM(total_usage) based on the date range
2 10 2019-09-16 - 2019-09-30 SUM(total_usage) based on the date range
3 15 2019-10-01 - 2019-10-15 SUM(total_usage) based on the date range
4 20 2019-10-16 - 2019-09-19 SUM(total_usage) based on the date range
5 25 2019-10-20 - 2019-10-31 SUM(total_usage) based on the date range
И после этого я планирую суммировать все это каждый месяц. на основе выходных данных этих 5 строк.
Вот мой текущий запрос, я смог выполнить его, если у них только одна история цен, и это отдельный запрос, если существует только одна история цен, нодля истории с несколькими ценами мне действительно трудно получить диапазон за каждый месяц и их общую сумму.
SELECT price.price,
price.from _range AS first_range,
price.to_range AS second_range,
(current_usage.total_usage),
current_usage.date_created
FROM history AS price
INNER JOIN current_usage AS current_usage
ON price.main_id = current_usage .main_id
INNER JOIN(SELECT MAX(to_range) AS maxdate
FROM history
GROUP BY YEAR(to_range), MONTH(to_range)) x ON price.to_range= maxdate
Любая помощь будет очень признательна, мне действительно нужна помощь.