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


-- =========================
-- DELETE
-- =========================

-- 1
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employees
    WHERE IsActive = 0
);

DELETE FROM Employees
WHERE IsActive = 0;

-- 2
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE DepartmentID IN (
        SELECT DepartmentID
        FROM Departments
        WHERE DepartmentName = 'Legal'
    )
);

DELETE FROM Projects
WHERE DepartmentID IN (
    SELECT DepartmentID
    FROM Departments
    WHERE DepartmentName = 'Legal'
);

DELETE FROM Employees
WHERE DepartmentID IN (
    SELECT DepartmentID
    FROM Departments
    WHERE DepartmentName = 'Legal'
);

DELETE FROM Departments
WHERE DepartmentName = 'Legal';

-- 3
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE ProjectName = 'Тестирование ПО'
);

DELETE FROM Projects
WHERE ProjectName = 'Тестирование ПО';

-- 4
DELETE FROM ProjectAssignments
WHERE HoursWorked = 0;

-- 5
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employees
    WHERE Salary < 50000
);

DELETE FROM Employees
WHERE Salary < 50000;

-- 6
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE DepartmentID IS NULL
);

-- 7
DELETE FROM Projects
WHERE ProjectID NOT IN (
    SELECT DISTINCT ProjectID
    FROM ProjectAssignments
);

-- 8
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employees
    WHERE Email LIKE '%example.com%'
    AND Salary > 90000
);

DELETE FROM Employees
WHERE Email LIKE '%example.com%'
AND Salary > 90000;

-- 9
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE DepartmentID NOT IN (
        SELECT DISTINCT DepartmentID
        FROM Employees
        WHERE DepartmentID IS NOT NULL
    )
);

DELETE FROM Projects
WHERE DepartmentID NOT IN (
    SELECT DISTINCT DepartmentID
    FROM Employees
    WHERE DepartmentID IS NOT NULL
);

DELETE FROM Departments
WHERE DepartmentID NOT IN (
    SELECT DISTINCT DepartmentID
    FROM Employees
    WHERE DepartmentID IS NOT NULL
);

-- 10
DELETE FROM ProjectAssignments
WHERE Role = 'Junior Analyst';

-- 11
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT pa.EmployeeID
    FROM ProjectAssignments pa
    JOIN Projects p
    ON pa.ProjectID = p.ProjectID
    WHERE p.ProjectName='Найм стажеров'
);

DELETE FROM Employees
WHERE EmployeeID IN (
    SELECT pa.EmployeeID
    FROM ProjectAssignments pa
    JOIN Projects p
    ON pa.ProjectID = p.ProjectID
    WHERE p.ProjectName='Найм стажеров'
);

-- 12
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employees
    WHERE DepartmentID = (
        SELECT DepartmentID
        FROM Departments
        WHERE DepartmentName='HR'
    )
);

-- 13
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE DepartmentID IN (
        SELECT DepartmentID
        FROM Departments
        WHERE Budget < 85000
    )
);

DELETE FROM Projects
WHERE DepartmentID IN (
    SELECT DepartmentID
    FROM Departments
    WHERE Budget < 85000
);

-- 14
DELETE FROM ProjectAssignments
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employees
    WHERE Salary > (
        SELECT AVG(Salary)
        FROM Employees
    )
);

DELETE FROM Employees
WHERE Salary > (
    SELECT AVG(Salary)
    FROM Employees
);

-- 15
DELETE FROM ProjectAssignments
WHERE HoursWorked < (
    SELECT AVG(HoursWorked)
    FROM ProjectAssignments
);

-- 16
UPDATE Employees
SET DepartmentID = 1
WHERE DepartmentID = (
    SELECT DepartmentID
    FROM Departments
    WHERE DepartmentName='Finance'
);

UPDATE Projects
SET DepartmentID = 1
WHERE DepartmentID = (
    SELECT DepartmentID
    FROM Departments
    WHERE DepartmentName='Finance'
);

DELETE FROM Departments
WHERE DepartmentName='Finance';

-- 17
UPDATE Departments
SET ManagerID = NULL
WHERE ManagerID = 1;

DELETE FROM HERE EmployeeID = 1;

DELETE FROM Employees
WHERE EmployeeID = 1;

-- 18
WITH CTE AS (
    SELECT *,
           ROW_NUMBER() OVER (
               PARTITION BY Email
               ORDER BY EmployeeID
           ) AS rn
    FROM Employees
)
DELETE FROM CTE
WHERE rn > 1;

-- 19
DELETE FROM ProjectAssignments
WHERE ProjectID IN (
    SELECT ProjectID
    FROM Projects
    WHERE ProjectName LIKE 'Тест%'
);

DELETE FROM Projects
WHERE ProjectName LIKE 'Тест%';

-- 20
DELETE FROM ProjectAssignments
WHERE ProjectID NOT IN (1,2,3); ProjectAssignments
W