#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;