-- 1. Вывести список сотрудников женского пола с должностями «Менеджер по рекламе» или «Дизайнер»
SELECT
С.Код_сотрудника,
С.ФИО,
С.Возраст,
С.Пол,
С.Адрес,
С.Телефон,
С.Паспортные_данные,
Д.Наименование_должности
FROM Сотрудники С
INNER JOIN Должности Д ON С.Код_должности = Д.Код_должности
WHERE С.Пол = N'Женский'
AND Д.Наименование_должности IN (N'Менеджер по рекламе', N'Дизайнер');
GO
-- 2. Вывести количество видов реклам для каждого места расположения
SELECT
М.Наименование AS [Место расположения],
COUNT(В.Код_вида) AS [Количество видов рекламы]
FROM Места_расположения М
LEFT JOIN Виды_рекламы В ON М.Код_вида = В.Код_вида
GROUP BY М.Код_места, М.Наименование;
GO
-- 3. Вывести количество уплаченных заказов
SELECT
COUNT(*) AS [Количество уплаченных заказов]
FROM Заказы
WHERE Отметка_об_оплате = N'Да';
GO
-- 4. Вывести 3 самых дорогих места расположения рекламы
SELECT TOP 3
Наименование,
Расположение,
Стоимость
FROM Места_расположения
ORDER BY Стоимость DESC;
GO
-- 5. Вывести стоимость всех заказов, выполненных в каждом месяце текущего года
SELECT
DATENAME(MONTH, Дата_заказа) AS [Месяц],
SUM(Стоимость) AS [Общая стоимость заказов]
FROM Заказы
WHERE YEAR(Дата_заказа) = YEAR(GETDATE())
GROUP BY DATENAME(MONTH, Дата_заказа), MONTH(Дата_заказа)
ORDER BY MONTH(Дата_заказа);
GO
-- 6. Вывести виды реклам, которые не использовались в заказах
SELECT
В.*
FROM Виды_рекламы В
WHERE В.Код_вида NOT IN (
SELECT DISTINCT М.Код_вида
FROM Заказы З
INNER JOIN Места_расположения М ON З.Код_места = М.Код_места
);
GO
-- 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;
GO
-- 8. Вывести информацию о сотруднике,