#sql
#sql
Вопрос:
Я пытаюсь умножить SUM
оператор на другой столбец. Например:
SELECT SUM(Orders.Sales)
Чтобы получить общий объем продаж.
SELECT Employee.Commission_Percentage
Чтобы получить процент комиссии.
Если я хочу объединить их в
SELECT SUM(Orders.Sales) * Employee.Commission_Percentage AS 'Total Income'
Я должен вставить Employee.Commision_Percentage
GROUP BY
предложение. Это прерывает вычисление. Есть ли какой-либо другой способ умножить SUM
результат на другой столбец, не помещая его в агрегированный или GROUP BY
?
Комментарии:
1.
FROM
И условие соединения имеют значение
Ответ №1:
Если вам нужны общие комиссионные:
SELECT SUM(o.Sales * e.Commission_Percentage)
FROM Orders o JOIN
Employee e
ON o.EmployeeId = e.EmployeeId;
Комментарии:
1. Это решило мою проблему, но теперь у меня есть другая в том же запросе. У меня есть запрос, который вычисляет комиссию путем умножения процента комиссии на продажи, используя приведенный выше формат. Мне нужно добавить эту СУММУ к базовой заработной плате сотрудника с помощью: ВЫБЕРИТЕ СУММУ (o.Продажи * e.Commission_Percentage) e.Зарплата. Опять же, мне приходится либо добавлять e.Salary в агрегат, либо группировать ПО предложению, и когда я делаю расчет, он ошибочен. Я знаю зарплату и общую сумму комиссионных, но она не добавляет их правильно. Я подозреваю, что это связано с предложением group by .
2. @user3788316 . , , Если у вас есть другой вопрос, тогда вам следует задать другой вопрос. Вы также должны включить примеры данных и желаемые результаты.
Ответ №2:
Используйте подзапрос… Что-то похожее на это:
select
e.employee_id,
s.sales * e.commission_percentage as total_income
from
employee e
join (
select
o.employee_id, sum (o.sales) as sales
from orders.sales as o
group by o.employee_id ) s on
e.employee_id = s.employee_id