Я вычисляю среднее значение за месяц, которое должно возвращать единственное среднее значение, поэтому я получил среднее значение. Это должно быть отношение один к многим между таблицей грузовых автомобилей и заказами, и я использую маппер строк для пружины jdbc
Select truckId, truckCode, purchasedDate,
descriptions, orderId, petrolQty, orderDate, avg(avgPetrolQty) as avgPerMonth, truckId from (
SELECT t.truckId, t.truckCode, t.purchasedDate, t.descriptions, o.orderId, o.petrolQty, o.orderDate,
COALESCE(monthname(o.orderDate),'Not Announced') as month,
IFNULL (avg(o.petrolQty),0) as avgPetrolQty
from truck t left join orderz o
on t.truckId = o.truckId
where t.truckId = 3
group by t.truckCode, o.orderId, o.orderDate
) group by truckCode, orderId
поэтому у меня есть такие заказы, которые относятся к truckId 3
вот полный результат
TRUCKID TRUCKCODE PURCHASEDDATE DESCRIPTION ORDERID PETROLQTY ORDERDATE AVGPERMONTH TRUCKID
3 BY2354 2005-05-01 BLACK TOYOTA 15 1 13.0 2006-01-21 13.0 3
3 BY2354 2005-05-01 BLACK TOYOTA 15 2 53.0 2002-01-21 53.0 3
Что дает два avgPermonth Как я могу написать лучше SQL
и мой sql выше дает в среднем за месяц как 100
, что неверно, даже когда я добавляю больше ордеров, он не меняется до тех пор, пока после 4 или более новых ордеров не получается какое-то нелогичное среднее. Что я делаю неправильно, и важно, чтобы мой sql получил полную информацию о обеих таблицах orderId может быть опущен, если это влияет на решение