You are on page 1of 2

ALTER SESSION SET CURRENT_SCHEMA = HR;

1.Sa se afiseze salariile managerilor;

ALTER SESSION SET CURRENT_SCHEMA = HR;


SELECT EMPLOYEE_ID, SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID IN (SELECT MANAGER_ID
FROM EMPLOYEES);

2.Sa se afiseze media salariilor managerilor

SELECT ROUND(AVG(SALARY)) FROM EMPLOYEES WHERE EMPLOYEE_ID IN (SELECT MANAGER_ID


FROM EMPLOYEES);

3. SA SE AFISEZE ANGAJATII CARE IAU SALARIUL MAI MARE DECAT MEDIA SALARIILOR
MANAGERILOR

SELECT EMPLOYEE_ID, SALARY FROM EMPLOYEES WHERE SALARY>(SELECT ROUND(AVG(SALARY))


FROM EMPLOYEES WHERE EMPLOYEE_ID IN (SELECT MANAGER_ID FROM EMPLOYEES));

4. Sa se afiseze angajatii care au salariul mai mare decat cel putin un manager din
departamentul lor

SELECT * FROM Employees,


(SELECT MIN(salary) AS salary, department_id FROM Employees WHERE employee_id IN
(SELECT manager_id FROM Employees) GROUP BY(department_id)) temp WHERE
Employees.salary > temp.salary AND Employees.department_id = temp.department_id;

5.

SELECT * FROM Employees ,


(SELECT MIN(salary) AS salary, department_id FROM Employees WHERE employee_id IN
(SELECT manager_id FROM Employees) GROUP BY(department_id)) temp WHERE
Employees.salary > temp.salary AND Employees.department_id = temp.department_id

AND EMPLOYEES.EMPLOYEE_ID NOT IN (SELECT MANAGER_ID FROM EMPLOYEES WHERE MANAGER_ID


IS NOT NULL);

6.
-- 1) Sa se afiseze salariile managerilor.
SELECT salary, employee_id FROM Employees WHERE employee_id IN (SELECT manager_id
FROM Employees);

-- 2) Sa se afiseze media salariilor managerilor.


SELECT ROUND(AVG(salary)) FROM Employees WHERE employee_id IN (SELECT manager_id
FROM Employees);

-- 3) Sa se afiseze angajatii care iau salariul mai mare decat media salariilor
managerilor
SELECT * FROM Employees WHERE salary > (SELECT ROUND(AVG(salary)) FROM Employees
WHERE employee_id IN (SELECT manager_id FROM Employees));

-- 4) Sa se afiseze angajatii care au salariul mai mare decat cel putin un manager
din departamentul lor.
SELECT * FROM Employees, (SELECT MIN(salary) AS salary, department_id FROM
Employees WHERE employee_id IN (SELECT manager_id FROM Employees) GROUP
BY(department_id)) temp
WHERE Employees.salary > temp.salary AND Employees.department_id =
temp.department_id;

-- 5) Sa se afiseze angajatii (sa nu fie manageri) care au salariul mai mare decat
cel putin un manager din departamentul lor.
SELECT * FROM Employees, (SELECT MIN(salary) AS salary, department_id FROM
Employees WHERE employee_id IN (SELECT manager_id FROM Employees) GROUP
BY(department_id)) temp
WHERE Employees.salary > temp.salary AND Employees.department_id =
temp.department_id AND Employees.employee_id NOT IN (SELECT manager_id FROM
Employees WHERE manager_id IS NOT NULL);

You might also like