SQL код в ACESS выдает ошибку "Данный подчиненный запрос должен выдавать не более одной записи"
Вот код:
SELECT Работник.[Табельный номер], Работник.ФИО, Профессия.[Наименование професии], Профессия.Оклад, Работник.[Признак увольнения],
(
Профессия.Оклад *
(
( SELECT ROUND((SELECT SUM(Оклад) FROM Профессия INNER JOIN Работник ON Профессия.[Код профессии] = Работник.[Код профессии]
WHERE [Признак увольнения]=True) * 100.0 )
/
(SELECT SUM(Оклад) FROM Профессия INNER JOIN Работник ON Профессия.[Код профессии] = Работник.[Код профессии] ), 1 )
FROM Профессия INNER JOIN Работник ON Профессия.[Код профессии] = Работник.[Код профессии]
GROUP BY [Признак увольнения]
)
)
AS [Увеличенный оклад]
FROM Профессия INNER JOIN Работник ON Профессия.[Код профессии] = Работник.[Код профессии];
Задание: Вычислить процентное содержание общей суммы зарплаты уволенных работников и увеличить на это количество % оклад работающим работникам.
Помогите, пожалуйста!
SQL
Помогитес sql кодом, пожалуйста!
Груп бай ставь по селекту
Предположим, уволено 50% фонда заработной платы. Осталось 50%.
Если 50% увеличить на 50%, будет не 100%, а 75% от фонда заработной платы до увольнения. Ты уверен, что хотел получить именно такой результат?
Если 50% увеличить на 50%, будет не 100%, а 75% от фонда заработной платы до увольнения. Ты уверен, что хотел получить именно такой результат?
SELECT
r.[Табельный номер],
r.ФИО,
p.[Наименование професии],
p.Оклад,
ROUND(p.Оклад * (1.0 + (
SELECT SUM(p1.Оклад) * 1.0 FROM Профессия AS p1
INNER JOIN Работник AS r1 ON p1.[Код профессии] = r1.[Код профессии]
WHERE r1.[Признак увольнения]
) / (
SELECT SUM(p1.Оклад) * 1.0 FROM Профессия AS p1
INNER JOIN Работник AS r1 ON p1.[Код профессии] = r1.[Код профессии]
))) AS [Увеличенный оклад]
FROM Профессия AS p
INNER JOIN Работник AS r ON p.[Код профессии] = r.[Код профессии]
WHERE NOT r.[Признак увольнения]
А вот так будет выглядеть код, распределяющий весь фонд заработной платы на всех оставшихся сотрудников: SELECT
r.[Табельный номер],
r.ФИО,
p.[Наименование професии],
p.Оклад,
ROUND(p.Оклад * (
SELECT SUM(p1.Оклад) * 1.0 FROM Профессия AS p1
INNER JOIN Работник AS r1 ON p1.[Код профессии] = r1.[Код профессии]
) / (
SELECT SUM(p1.Оклад) * 1.0 FROM Профессия AS p1
INNER JOIN Работник AS r1 ON p1.[Код профессии] = r1.[Код профессии]
WHERE NOT r1.[Признак увольнения]
)) AS [Увеличенный оклад]
FROM Профессия AS p
INNER JOIN Работник AS r ON p.[Код профессии] = r.[Код профессии]
WHERE NOT r.[Признак увольнения]
Похожие вопросы
- PL SQL Помогите пожалуйста как из этого запроса сделать функцию
- Что делает кусок коды, выделенный синим? SQL
- Просьба объяснить код на SQL - что означают команды и почему не запускается.
- SQL. Выводятся не все данные. 4 задача.
- Чем отличаются разные SQL?
- Не очень понятен синтаксис запросов SQL
- Помогите написать sql запросы
- Должен ли программист/аналитик писать код с той же скоростью, с которой обычные люди пишут обычный текст? Java, SQL
- Вопрос по SQL + Python
- Подскажите, есть ли такое понятие чистый SQL???