Умножение и суммирование после выполнения ВНУТРЕННЕГО СОЕДИНЕНИЯ

#mysql #sql #sum #inner-join

#mysql #sql #сумма #внутреннее соединение

Вопрос:

У меня есть 2 таблицы с именами orders и order_details.

Таблица orders содержит данные orders, такие как id, employee_id, customer_id, order_date и т.д.

И order_details содержит идентификатор, order_id, product_id, количество, unit_price и т.д.

Я создал внутреннее объединение из обеих этих таблиц, чтобы собрать employee_id, количество и unit_price из этих таблиц.

Я сделал это, чтобы собрать количество * unit_price, которое продал каждый employee_id.

Но я должен СУММИРОВАТЬ весь результат из (количество * единица_цена), поэтому у меня есть общая сумма, которую продал каждый сотрудник.

Это предварительный просмотр таблицы:

    Employee_id     total_price
       1             250.000
       1              10.00
       1             728.000
       2              72.00
       2               8.00
       2              900.00
       3              222.00
       3              123.00
  

Мне нужно было бы суммировать total_price из всех employee_id, чтобы это выглядело так:

   Employee_id      total_price
      1              10222.00
      2               982.00
      3               339.00
  

Это код, который у меня есть:

 select  o.employee_id,
        od.quantity*od.unit_price as total_price
        from orders AS o
        inner join order_details AS od
        on o.id = od.id;
  

Что я пытался:

 select  o.employee_id,
        od.quantity*od.unit_price as total_price,
        SUM (total_price)
        from orders AS o
        inner join order_details AS od
        on o.id = od.id
        group by employee_id;
  

Ответ №1:

Предположительно, вы хотите:

 select o.employee_id, sum(od.quantity*od.unit_price) tota_price
from orders as o
inner join order_details as od on o.id = od.order_id
group by o.employee_id;
  

Обоснование:

  • умножение происходит внутри агрегатной функции SUM()

  • условие соединения между двумя таблицами должно быть исправлено: связь, по-видимому, между orders(id) и order_details(order_id) , а не order_details(id)

Ответ №2:

Вы просто хотите:

 select o.employee_id,
       sum(od.quantity*od.unit_price) as total_price,
from orders o join
     order_details od
     on o.id = od.id
group by o.employee_id;