Запросы sql 1 Вариант Некрасов Рассчитать возраст сотрудника на текущую дату



Дата08.12.2023
өлшемі14,83 Kb.
#135416
Байланысты:
Миронов sql


Запросы SQL
1 Вариант Некрасов

1.Рассчитать возраст сотрудника на текущую дату:
SELECT Id, Фамилия, Имя, Отчество, ДеньРождения, DATEDIFF(YEAR, ДеньРождения, GETDATE()) AS Возраст
FROM Сотрудники

2.Показать сотрудника с наименьшим окладом:
SELECT TOP 1 Id, Фамилия, Имя, Отчество, Должность, Оклад
FROM Сотрудники
JOIN Должности ON Сотрудники.Должность = Должности.Id
ORDER BY Оклад ASC

3.Показать людей, возраст которых выше 25 лет:
SELECT Id, Фамилия, Имя, Отчество, ДеньРождения
FROM Сотрудники
WHERE DATEDIFF(YEAR, ДеньРождения, GETDATE()) > 25

4.Рассчитать полную заработную плату (т.е. оклад+премия) сотрудников с учетом премий по месяцам:
SELECT Сотрудники.Id, Фамилия, Имя, Отчество, Работа.Месяц, Работа.Год, Должности.Оклад, Работа.Премия,
(Должности.Оклад + (Должности.Оклад * Работа.Премия / 100)) AS "ПолнаяЗП"
FROM Сотрудники
JOIN Должности ON Сотрудники.Должность = Должности.Id
JOIN Работа ON Сотрудники.Id = Работа."Id сотрудника"

5.Показать среднюю заработную плату в фирме:
SELECT AVG(Оклад) AS "СредняяЗП"
FROM Сотрудники
JOIN Должности ON Сотрудники.Должность = Должности.Id

6.Выбрать сотрудников за сентябрь 2011 года, полная заработная плата которых не превышает 25 000 рублей:
SELECT Сотрудники.Id, Фамилия, Имя, Отчество, Работа.Месяц, Работа.Год, (Должности.Оклад + (Должности.Оклад * Работа.Премия / 100)) AS "ПолнаяЗП"
FROM Сотрудники
JOIN Должности ON Сотрудники.Должность = Должности.Id
JOIN Работа ON Сотрудники.Id = Работа."Id сотрудника"
WHERE Работа.Месяц = 'сентябрь' AND Работа.Год = 2011 AND (Должности.Оклад + (Должности.Оклад * Работа.Премия / 100)) <= 25000

7.Рассчитать общую сумму денег, которая была выплачена сотрудникам в октябре 2011 года:
SELECT SUM(Должности.Оклад + (Должности.Оклад * Работа.Премия / 100)) AS "ОбщаяСумма"
FROM Сотрудники
JOIN Должности ON Сотрудники.Должность = Должности.Id
JOIN Работа ON Сотрудники.Id = Работа."Id сотрудника"
WHERE Работа.Месяц = 'октябрь' AND Работа.Год = 2011

8.Написать запрос на вставку данных в таблицу "Работа" за ноябрь 2011 года и вставить следующие данные (id сотрудника – премия):
INSERT INTO Работа ("Id сотрудника", Месяц, Год, Премия)
VALUES (1, 'ноябрь', 2011, 75),
(2, 'ноябрь', 2011, 100),
(3, 'ноябрь', 2011, 100),
(4, 'ноябрь', 2011, 50)

9.Подсчитать количество премий, размер которых больше либо равен 75%:
SELECT COUNT(*) AS "Количество"
FROM Работа
WHERE Премия >= 75

Объяснение: почему нецелесообразно хранить данные о должностях и окладах в таблице "Сотрудники", зачем нужно создавать отдельную таблицу "Должности"?
Создание отдельной таблицы "Должности" имеет ряд преимуществ:

Нормализация данных: Разделение данных на разные таблицы улучшает нормализацию данных и помогает избежать дублирования информации. В таблице "Сотрудники" не нужно хранить повторяющуюся информацию о должностях и окладах для каждого сотрудника, а можно использовать ссылку на соответствующую запись в таблице "Должности".

Управление и изменение данных: Если информация о должностях и окладах хранится в отдельной таблице, то изменение окладов или добавление новых должностей будет гораздо удобнее и безопаснее. Необходимо изменить данные только в одном месте (таблице "Должности"), и эти изменения автоматически отразятся во всех связанных записях в таблице "Сотрудники".

Удобство анализа данных: Отдельная таблица "Должности" облегчает анализ данных по должностям и окладам. Вы можете выполнять запросы и агрегацию данных, суммировать оклады, находить минимальные и максимальные значения, а также получать средние значения окладов по должностям.



Таким образом, использование отдельной таблицы "Должности" улучшает структуру и управление данными, обеспечивает нормализацию и удобство анализа данных.

Достарыңызбен бөлісу:




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет