Разбирам, че искате за всеки ден:
- сумата от
order_items.energy_used
за всички поръчки, създадени този ден created_at
иorder_sum
които съответстват на последнатаorder
създаден на този ден
Вашите примерни данни не са много представителни за това - има само една поръчка на ден. Също така не е ясно защо created_at
се повтаря и в двете таблици; наистина трябва да разчитате на order_id
за свързване на двете таблици
Ето заявка за горната цел:това работи чрез присъединяване към orders
таблица с обобщена заявка, която изчислява общата енергия на ден (използвайки order_id
за да получите created_at
дата от orders
) и филтрира по последната поръчка на ден:
select
date(o.created_at) date_of_month,
i.total_energy_used,
o.created_at last_order_date,
o.order_sum last_order_sum
from orders o
inner join (
select date(o1.created_at) date_of_month, sum(i1.energy_used) total_energy_used
from orders o1
inner join order_items i1 on o1.id = i1.order_id
group by date(o1.created_at)
) i on i.date_of_month = date(o.created_at)
where o.created_at = (
select max(o1.created_at)
from orders o1
where date(o1.created_at) = date(o.created_at)
)
<преди>дата_на_месец | обща_използвана_енергия | дата на последна_поръчка | последна_сума_на_поръчка:------------ | ----------------:| :------------------ | -------------:2020-01-25 | 77 | 2020-01-25 09:13:00 | 25.132020-01-26 | 75 | 2020-01-26 10:14:00 | 14.002020-01-27 | 0 | 2020-01-27 11:13:00 | 35.00