postgres avg query

Не могу понять даже как составить, есть 3 таблицы

Templates /

id name


Products /

id template_id delivery_cost


Modifications /

id product_id price

У меня есть tempalte_id и зная его нужно узнать все products и среднее значение modifications + shipping_cost товара

У меня вышло вот что:

SELECT *, (
           (SELECT avg(dp.price)
            FROM (
                     SELECT ppm.price as price
                     FROM producer_products
                              LEFT JOIN modifications ppm
                                        on producer_products.id = ppm.product_id
                     WHERE products.template_id = 385
                     GROUP BY ppm.product_id, ppm.price
                 ) as dp
           ) + (
               SELECT avg(products.shipping_cost) as scost
               FROM products
               WHERE products.template_id = 385
           )
    ) as price
FROM products
WHERE products.template_id = 385

Что дает совсем не то среднее значение, оно высчитывает среднее включая модификации не одного конкретного товара, а сразу всех. Подскажите как решить это


Ответы (0 шт):