У меня проблема. Не получается корректно создать хранимую процедуру. В результате её выполнения выходит неправильный результат. Нужно реализовать под 3 вариант. У меня есть готовый код, но в нём есть проблема. Он выводит только максимальную з/п в подразделении, без указания сотрудника. Преподаватель сказал, что мою проблему можно решить с помощью под запроса, но я не понимаю как. Помогите, пожалуйста.
sql:
CREATE PROCEDURE high
@fam VARCHAR(100)
AS
BEGIN
SELECT Лаборатория.Название, Лаборатория.ID_Laboratory, MAX(Сотрудники.Оклад)AS["Максимальная з/п"]
FROM Лаборатория, Сотрудники
WHERE Лаборатория.ID_Laboratory=Сотрудники.id_lab AND @fam=Лаборатория.ID_Laboratory
GROUP BY Лаборатория.ID_Laboratory, Лаборатория.Название;
END;
Я знаю на 100%, что даже если это делать без процедуры, все равно будет такая проблема.
Один человек мне пытался помочь, но там был ужас какой сложный код. Прикладываю этот код ниже. Так мне делать НЕ надо:
CREATE PROCEDURE high
@ID_Lab integer
AS
BEGIN
DECLARE @max_sale money
-- ищем максимальную зп в лаборатории
SELECT
@max_sale = MAX(S.[Оклад])
FROM
[Лаборатория] L WITH(NOLOCK)
JOIN [Сотрудники] S WITH(NOLOCK) ON L.ID_Laboratory = S.ID_Lab
WHERE
L.ID_Laboratory = @ID_Lab
-- вытаскиваем сотрудников лаборатории, имеющих зп, равную максимальной
SELECT
L.[Название],
L.ID_Laboratory,
S.[Имя],
S.[Фамилия],
@max_sale as ["Максимальная з/п"]
FROM
[Лаборатория] L WITH(NOLOCK)
JOIN [Сотрудники] S WITH(NOLOCK) ON L.ID_Laboratory = S.ID_Lab
WHERE
L.ID_Laboratory = @ID_Lab
and S.[Оклад] = @max_sale
END
GO
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |