Умножьте сумму на другой столбец

#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