Jeg forstår, at du ønsker, for hver dag:
- summen af
order_items.energy_used
for alle ordrer oprettet den dag - den
created_at
ogorder_sum
der svarer til den senesteorder
oprettet 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)
)