Загрузка данных


-- 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. Вывести информацию о сотруднике,