-- 1. Вывести список сотрудников женского пола с должностями X или Y (например, 'Менеджер по рекламе' или 'Дизайнер')
SELECT
С.Код_сотрудника,
С.ФИО,
С.Возраст,
С.Пол,
С.Телефон,
Д.Наименование_должности
FROM Сотрудники С
INNER JOIN Должности Д ON С.Код_должности = Д.Код_должности
WHERE С.Пол = 'Женский'
AND Д.Наименование_должности IN ('Менеджер по рекламе', 'Дизайнер');
-- 2. Вывести количество видов реклам для каждого места расположения
SELECT
М.Наименование AS [Место расположения],
COUNT(В.Код_вида) AS [Количество видов рекламы]
FROM Места_расположения М
LEFT JOIN Виды_рекламы В ON М.Код_вида = В.Код_вида
GROUP BY М.Код_места, М.Наименование;
-- 3. Вывести количество уплаченных заказов
SELECT
COUNT(*) AS [Количество уплаченных заказов]
FROM Заказы
WHERE Отметка_об_оплате = 'Да';
-- 4. Вывести 3 самых дорогих места расположения рекламы
SELECT TOP 3
Наименование,
Расположение,
Стоимость
FROM Места_расположения
ORDER BY Стоимость DESC;
-- 5. Вывести стоимость всех заказов, выполненных в каждом месяце текущего года
SELECT
DATENAME(MONTH, Дата_заказа) AS [Месяц],
SUM(Стоимость) AS [Общая стоимость заказов]
FROM Заказы
WHERE YEAR(Дата_заказа) = YEAR(GETDATE())
GROUP BY DATENAME(MONTH, Дата_заказа), MONTH(Дата_заказа)
ORDER BY MONTH(Дата_заказа);
-- 6. Вывести виды реклам, которые не использовались в заказах
SELECT
В.*
FROM Виды_рекламы В
WHERE В.Код_вида NOT IN (
SELECT DISTINCT М.Код_вида
FROM Заказы З
INNER JOIN Места_расположения М ON З.Код_места = М.Код_места
);
-- 7. Вывести 3 самых популярных услуги
WITH AllServices AS (
SELECT Код_услуги_1 AS Код_услуги FROM Заказы WHERE Код_услуги_1 IS NOT NULL
UNION ALL
SELECT Код_услуги_2 AS Код_услуги FROM Заказы WHERE Код_услуги_2 IS NOT NULL
UNION ALL
SELECT Код_услуги_3 AS Код_услуги FROM Заказы WHERE Код_услуги_3 IS NOT NULL
)
SELECT TOP 3
У.Наименование AS [Услуга],
COUNT(А.Код_услуги) AS [Количество заказов с услугой]
FROM AllServices А
INNER JOIN Дополнительные_услуги У ON А.Код_услуги = У.Код_услуги
GROUP BY У.Код_услуги, У.Наименование
ORDER BY COUNT(А.Код_услуги) DESC;
-- 8. Вывести информацию о сотруднике, оформившем самый дорогой заказ
SELECT TOP 1
С.*,
З.Стоимость AS [Стоимость заказа]
FROM Сотрудники С
INNER JOIN Заказы З ON С.Код_сотрудника = З.Код_сотрудника
ORDER BY З.Стоимость DESC;