Добавил:
sergey123
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БД / 4
.txt 1.Вывести список сотрудников в порядке обратном алфавитному.
SELECT Name
FROM EMP
ORDER BY Name DESC
2.Вывести всех инженеров (имя, должность и номер отдела), отсортировав их по возрасту.
SELECT Name, ID_Dep, Job, Born_date
FROM EMP, JOB
WHERE EMP.ID_Job=JOB.ID_Job And JOB.Job='Инженер'
ORDER BY Born_date
3.Вывести сотрудников, не работающих в отделе 1, зарплата которых находится в интервале от 1000 до 2000.
SELECT Name, ID_Dep, Salary FROM dbo.EMP WHERE ID_Dep != 1
AND Salary > 1000 AND Salary < 2000
4.Вывести годы поступления на работу и количество сотрудников, поступивших на работу в каждом году.
SELECT YEAR(Hire_date), count(*) FROM dbo.EMP
group by YEAR(Hire_date)
5.Вывести имя сотрудника, его зарплату и минимальную зарплату сотрудника его уровня.
SELECT Name, Salary, Losal From dbo.EMP E inner join
(SELECT *FROM dbo.JOB) J
On E.ID_Job = J.ID_Job inner join
(SELECT *FROM dbo.SALGRADE) S
On J.Grade = S.Grade
6.Вывести название отдела, в котором работает старейший сотрудник.
SELECT Department
FROM dbo.DEP D inner join (SELECT *FROM dbo.EMP) E
On D.ID_Dep = E.ID_Dep
WHERE Hire_date <= All(SELECT Hire_date FROM dbo.EMP)
7.Вывести названия отделов, в которых максимальная зарплата превышает 2000.
SELECT Department, Hisal FROM dbo.DEP, dbo.SALGRADE
WHERE Hisal > 2000
8.Вывести список отделов, сотрудники из которых работают в самом большом проекте (по количеству участников).
SELECT Department
FROM dbo.DEP D inner join (SELECT *FROM dbo.EMP) E
On D.ID_Dep = E.ID_Dep inner join
(SELECT *FROM dbo.PROJECT_EMP) P
On E.ID_Emp = P.ID_Emp
WHERE (SELECT COUNT(ID_Project) FROM dbo.PROJECT_EMP) >= All(SELECT COUNT(ID_Project) FROM dbo.PROJECT_EMP)
SELECT Name
FROM EMP
ORDER BY Name DESC
2.Вывести всех инженеров (имя, должность и номер отдела), отсортировав их по возрасту.
SELECT Name, ID_Dep, Job, Born_date
FROM EMP, JOB
WHERE EMP.ID_Job=JOB.ID_Job And JOB.Job='Инженер'
ORDER BY Born_date
3.Вывести сотрудников, не работающих в отделе 1, зарплата которых находится в интервале от 1000 до 2000.
SELECT Name, ID_Dep, Salary FROM dbo.EMP WHERE ID_Dep != 1
AND Salary > 1000 AND Salary < 2000
4.Вывести годы поступления на работу и количество сотрудников, поступивших на работу в каждом году.
SELECT YEAR(Hire_date), count(*) FROM dbo.EMP
group by YEAR(Hire_date)
5.Вывести имя сотрудника, его зарплату и минимальную зарплату сотрудника его уровня.
SELECT Name, Salary, Losal From dbo.EMP E inner join
(SELECT *FROM dbo.JOB) J
On E.ID_Job = J.ID_Job inner join
(SELECT *FROM dbo.SALGRADE) S
On J.Grade = S.Grade
6.Вывести название отдела, в котором работает старейший сотрудник.
SELECT Department
FROM dbo.DEP D inner join (SELECT *FROM dbo.EMP) E
On D.ID_Dep = E.ID_Dep
WHERE Hire_date <= All(SELECT Hire_date FROM dbo.EMP)
7.Вывести названия отделов, в которых максимальная зарплата превышает 2000.
SELECT Department, Hisal FROM dbo.DEP, dbo.SALGRADE
WHERE Hisal > 2000
8.Вывести список отделов, сотрудники из которых работают в самом большом проекте (по количеству участников).
SELECT Department
FROM dbo.DEP D inner join (SELECT *FROM dbo.EMP) E
On D.ID_Dep = E.ID_Dep inner join
(SELECT *FROM dbo.PROJECT_EMP) P
On E.ID_Emp = P.ID_Emp
WHERE (SELECT COUNT(ID_Project) FROM dbo.PROJECT_EMP) >= All(SELECT COUNT(ID_Project) FROM dbo.PROJECT_EMP)