Возникли проблемы с использованием встроенного представления для всех данных
У меня возникли некоторые проблемы с использованием встроенного представления для создания столбца, в котором я рассчитываю зарплату /total_sal * 100. Моя проблема в том, что по какой-то причине я получаю значение не для всех сотрудников, а только для первого.
select emp.ename, emp.sal,
( select (emp.sal / sum(emp.sal) * 100))
from emp;
Я пытался осмотреться, чтобы увидеть, смогу ли я найти ответ, но не смог. Любая помощь будет очень полезна!
1 ответ
Решение
Ну, запрос в вопросе должен дать вам синтаксическую ошибку, так как подзапрос не имеет предложения from. Вам нужно только получить сумму в подзапросе, а не весь процент расчета:
select emp.ename,
emp.sal,
emp.sal / (select sum(emp2.sal) from emp as emp2) * 100
from emp;
Альтернатива - переместить подзапрос в предложение from (производная таблица) и выполнить перекрестное соединение:
select emp.ename,
emp.sal,
emp.sal / t.tot_sal * 100
from emp
join (select sum(emp2.sal) as tot_sal from emp as emp2) as t;