У меня возникают проблемы с нижеследующим запросом, работающим на SQL Server.Использование функций Aggregate и Max
SELECT
emp_id= CASE employee_id
WHEN ''
THEN RTRIM(last_name) + '_' + RTRIM(first_name)
+ '_' + RTRIM(gender) + '_'
+ RTRIM(race_ethnicity_code) + '_'
+ RTRIM(high_degree_code) + '_' + RTRIM(position_code) + '_'
+ RTRIM(assignment_code)
ELSE employee_id
END ,
last_name, first_name,
assign_perc,
assignment_num,
CAST((total_salary)AS NUMERIC (18,2))* CAST((assign_perc) AS NUMERIC (18,2)) AS salary,
total_salary
FROM employee
ORDER BY last_name, first_name, district_name
Мой скрипт - это простое извлечение столбцов, создающее уникальный ключ через оператор case для emp_id, когда его значение равно null. Проблема im заключается в том, чтобы умножить assign_perc на total_Salary, когда у этого человека есть несколько назначений и максимальная заработная плата, когда этот продавец указан только один раз. Например - мои ожидаемые результаты:
Джон Смит является лишь неполным рабочим, имеющими одно назначения быть перечислен только один раз, так что его assign_perc будет меньше, чем 1, но мне еще нужен максимальная зарплата, а не суммарная сумма (assign_perc * total_salary). Спасибо за помощь.
Ваши результаты не согласуются с SQL. Для Джона Смита заработная плата и total_salary имеют одинаковую стоимость, однако зарплата должна составлять 0,75 * total_salary в соответствии с вашим запросом. –
Полученные мной результаты - это то, что мне нужно. Мой запрос в настоящее время производит (.75 * 10400) = 7800 - зарплата для Джона Смита. – Tone
Решение будет действительно беспорядочным, поскольку у вас нет простого способа определить количество записей для конкретного сотрудника без конкретного employee_id. – PinnyM