Задать вопрос

Как в Mysql суммировать средние значения?

Всем привет. Столкнулся с глупой проблемой. Но уверен что есть простое решение!
Есть запрос
SELECT SUM(AVG(accessories_supplyposition.Price) * (pack_accessories.Value * pack_accessories.Value_Thing))
  FROM pack LEFT JOIN pack_accessories ON pack.Id = pack_accessories.Pack_Id
    LEFT JOIN transaction_records_accessories ON transaction_records_accessories.Pack_Accessories_Id = pack_accessories.Id
    LEFT JOIN accessories_balance ON transaction_records_accessories.Supply_Balance_Id = accessories_balance.Id
    LEFT JOIN accessories_supplyposition ON accessories_balance.Accessories_SupplyPositionId = accessories_supplyposition.Id
  WHERE pack.Id = 2000
  GROUP BY pack_accessories.Id


Задача запроса: посчитать цену изделия учитывая среднюю стоимость материалов
Но вылазит ошибка Invalid use of group function.

Я примерно понимаю с чем это связано, но не знаю как это решить! Если убрать SUM() то почти все работает!
SELECT AVG(accessories_supplyposition.Price) * (pack_accessories.Value * pack_accessories.Value_Thing)
  FROM pack LEFT JOIN pack_accessories ON pack.Id = pack_accessories.Pack_Id
    LEFT JOIN transaction_records_accessories ON transaction_records_accessories.Pack_Accessories_Id = pack_accessories.Id
    LEFT JOIN accessories_balance ON transaction_records_accessories.Supply_Balance_Id = accessories_balance.Id
    LEFT JOIN accessories_supplyposition ON accessories_balance.Accessories_SupplyPositionId = accessories_supplyposition.Id
  WHERE pack.Id = 2000
  GROUP BY pack_accessories.Id

Вывод :
  1. 36.174600000000
  2. 280.645748400000
  3. 31.320000000000

Остается только суммировать эти значения!
Подскажите!
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
Melkij
@Melkij
DBA для вашего PostgreSQL?
Просто добавьте ещё один select
select sum(amount) from (
    select avg(/**/) as amount
    /* ... */
) total
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы