Jeg forstår, at du ønsker, for hver dag:
- summen af
order_items.energy_usedfor alle ordrer oprettet den dag - den
created_atogorder_sumder svarer til den senesteorderoprettet den dag
Dine prøvedata er ikke særlig repræsentative for det - de har kun én ordre pr. dag. Det er også uklart, hvorfor created_at gentages i begge tabeller; du burde virkelig stole på order_id at relatere begge tabeller
Her er en forespørgsel til ovenstående formål:dette virker ved at tilslutte sig orders tabel med en samlet forespørgsel, der beregner den samlede energi pr. dag (ved hjælp af order_id for at få created_at dato fra orders ), og filtrerer på den seneste ordre pr. dag:
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)
)