sql помогите решить задание
CREATE TABLE DEPT ( -- Филиалы фирмы
DEPTNO NUMBER (2) NOT NULL, -- Номер филиала
DNAME VARCHAR2 (14), -- Название филиала
LOC VARCHAR2 (13), -- Город, в котором расположен филиал
CONSTRAINT DEPT_PRIMARY_KEY
PRIMARY KEY (DEPTNO)) ;
CREATE TABLE EMP ( -- Сотрудники
EMPNO NUMBER (4) NOT NULL, -- Табельный номер
ENAME VARCHAR2 (10), -- Фамилия
JOB VARCHAR2 (9), -- Должность
MGR NUMBER (4), -- Табельный номер руководителя
HIREDATE DATE, -- Дата приема на работу
SAL NUMBER (7,2), -- Заработная плата
DEPTNO NUMBER (2) NOT NULL, -- Номер филиала
CONSTRAINT EMP_PRIMARY_KEY
PRIMARY KEY (EMPNO) ) ;
# Вывести список всех филиалов, упорядочив их по местоположению, а затем по количеству сотрудников.
# Вывести список всех филиалов с фамилиями руководителей (руководителем считается сотрудник, подчиняющийся работнику другого филиала или никому не подчиняющийся).
# Определить табельный номер для вновь принимаемого на работу сотрудника. Табельный номер определяется как минимальный «свободный».
# Вывести (для всех филиалов) список вида
|Наименование филиала | Самый высокооплачиваемый сотрудник |Самый низкооплачиваемый сотрудник|
# Увеличить заработную плату сотрудникам
* проработавшим более 5 лет — на 50%
* проработавшим более 3 лет — на 30%
* проработавшим более 2 лет — на 20%
* проработавшим более 1 года — на 10 грн.
* проработавшим менее 1 года — не увеличивать
буду очень благодарен
Вот что я смог набрать сам
Помогите плиз проверьте кто может
1
SELECT DEPT.DNAME, DEPT.LOC, COUNT(EMP.EMPNO) AS COUNTEMP
FROM DEPT, EMP
ORDER BY DEPT.LOC OR COUNTEMP
WHERE DEPT.NUMBER = EMP.NUMBER;
2
SELECT DEPT.DNAME, EMP.ENAME
FROM DEPT, EMP
WHERE MGR IS NULL
AND DEPT.NUMBER = EMP.NUMBER;
3
SELECT (MAX(EMP.EMPNO))+1 AS NEXTEMPNO
FROM DEPT, EMP
WHERE DEPT.NUMBER = EMP.NUMBER;
4
SELECT DEPT.DNAME, EMP.MAX(SAL), EMP.MIN(SAL)
FROM DEPT, EMP
GROUP BY DEPT.DNAME
WHERE DEPT.NUMBER = EMP.NUMBER;
5
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .5
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2004 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .3
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2005 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .2
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2007 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL + 10
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2008 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER;
CREATE TABLE DEPT ( -- Филиалы фирмы
DEPTNO NUMBER (2) NOT NULL, -- Номер филиала
DNAME VARCHAR2 (14), -- Название филиала
LOC VARCHAR2 (13), -- Город, в котором расположен филиал
CONSTRAINT DEPT_PRIMARY_KEY
PRIMARY KEY (DEPTNO)) ;
CREATE TABLE EMP ( -- Сотрудники
EMPNO NUMBER (4) NOT NULL, -- Табельный номер
ENAME VARCHAR2 (10), -- Фамилия
JOB VARCHAR2 (9), -- Должность
MGR NUMBER (4), -- Табельный номер руководителя
HIREDATE DATE, -- Дата приема на работу
SAL NUMBER (7,2), -- Заработная плата
DEPTNO NUMBER (2) NOT NULL, -- Номер филиала
CONSTRAINT EMP_PRIMARY_KEY
PRIMARY KEY (EMPNO) ) ;
# Вывести список всех филиалов, упорядочив их по местоположению, а затем по количеству сотрудников.
# Вывести список всех филиалов с фамилиями руководителей (руководителем считается сотрудник, подчиняющийся работнику другого филиала или никому не подчиняющийся).
# Определить табельный номер для вновь принимаемого на работу сотрудника. Табельный номер определяется как минимальный «свободный».
# Вывести (для всех филиалов) список вида
|Наименование филиала | Самый высокооплачиваемый сотрудник |Самый низкооплачиваемый сотрудник|
# Увеличить заработную плату сотрудникам
* проработавшим более 5 лет — на 50%
* проработавшим более 3 лет — на 30%
* проработавшим более 2 лет — на 20%
* проработавшим более 1 года — на 10 грн.
* проработавшим менее 1 года — не увеличивать
буду очень благодарен
Вот что я смог набрать сам
Помогите плиз проверьте кто может
1
SELECT DEPT.DNAME, DEPT.LOC, COUNT(EMP.EMPNO) AS COUNTEMP
FROM DEPT, EMP
ORDER BY DEPT.LOC OR COUNTEMP
WHERE DEPT.NUMBER = EMP.NUMBER;
2
SELECT DEPT.DNAME, EMP.ENAME
FROM DEPT, EMP
WHERE MGR IS NULL
AND DEPT.NUMBER = EMP.NUMBER;
3
SELECT (MAX(EMP.EMPNO))+1 AS NEXTEMPNO
FROM DEPT, EMP
WHERE DEPT.NUMBER = EMP.NUMBER;
4
SELECT DEPT.DNAME, EMP.MAX(SAL), EMP.MIN(SAL)
FROM DEPT, EMP
GROUP BY DEPT.DNAME
WHERE DEPT.NUMBER = EMP.NUMBER;
5
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .5
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2004 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .3
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2005 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL / .2
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2007 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER
UNION
SELECT EMP.ENAME, EMP.HIREDATE, EMP.SAL, EMP.SAL + 10
FROM DEPT, EMP
WHERE EMP.HIREDATE BETWEEN 1/12/2008 AND 1/12/2009
AND DEPT.NUMBER = EMP.NUMBER;