毎日、あなたが望んでいることを理解しています:
-
order_items.energy_used
の合計 その日に作成されたすべての注文について -
created_at
およびorder_sum
最新のorder
に対応する その日に作成された
サンプルデータはそれをあまり表していない-それは1日に1つの注文しかない。また、なぜcreated_at
なのかは不明です。 両方のテーブルで繰り返されます。あなたは本当にorder_id
に頼るべきです 両方のテーブルを関連付ける
上記の目的のためのクエリは次のとおりです。これはorders
を結合することで機能します 1日あたりの総エネルギーを計算する集計クエリを含むテーブル(order_id
を使用) created_at
を取得するには orders
からの日付 )、および1日あたりの最新の注文でフィルタリングします:
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)
)
date_of_month | total_energy_used | last_order_date | last_order_sum :------------ | ----------------: | :------------------ | -------------: 2020-01-25 | 77 | 2020-01-25 09:13:00 | 25.13 2020-01-26 | 75 | 2020-01-26 10:14:00 | 14.00 2020-01-27 | 0 | 2020-01-27 11:13:00 | 35.00