Падали се задачи

25 юни
2010 г.

19:23 ч.

Задача 10. (10 точки) В базата от данни със схема:

DEPT (DEPTNO,
DEPTNAME, MGRNO, ADMRDEPT, LOCATION);

EMPLOYEE (EMPNO,
FIRSTNAME, MIDNAME, LASTNAME, WORKDEPT, HIREDATE, JOB, GENDER, BIRTHDATE,
SALARY, BONUS, COMM);

PROJECT (PROJNO,
PROJNAME, DEPTNO, RESPEMP, PRSTDATE, PRENDATE, MAJPROJ);

се съхранява
информация за департаменти, работници и проекти.

• Таблицата DEPT
съдържа информация за номер и име на департамент (DEPTNO и DEPTNAME) и за номер
на работник (MGRNO) – менажер за този департамент;

• Таблицата EMPLOYEE
съдържа информация за номер на работник (EMPNO), лични данни (FIRSTNAME,
MIDINIT, LASTNAME), длъжност (JOB), заплата (SALARY) и номера на департамента
(WORKDEPT), към който работи;

• Таблицата PROJECT
съдържа информация за номер (PROJNO) и име на проект (PROJNAME), начална и
крайна дата на проекта (PRSTDATE, PRENDATE), департамента, към който е проектът
(DEPTNO) и номера на работника – менажер на проекта (RESPEMP).

А) Да се напише
заявка, която извежда името на департамента, броя на проектите и сумарната
заплата на менажерите на проекти от този департамент.

Select
d.deptname,

(

Select count(p.projno)

From project p

Where d.deptno = p.deptno

) as projectsCount,

(

Select sum(emps.salary)

From

(

Select distinct empno, salary

From employee e

Inner join project p on p.respemp = e.empno

Where d.deptno = p.deptno

) emps

) as salarySum

From
dept d

Б) Като се използва
заявката от подточка А, да се напише заявка, която извежда името на
департамента с най-много проекти.

Забележка: Ако има
повече департаменти с брой на проектите, равен на максималния брой на проекти,
тези департаменти също да се изведат.

Select
top(1) with ties dp.deptname

From ("заявка от подточка А") dp

Order
by dp.projectsCount desc

Или

Select
dp.deptname

From ("заявка от подточка А") dp

Where dp.projectsCount=(select max(projectsCount) from ("заявка от подточка А"))

C) Като се използва заявката от подточка А, да се напише заявка, която
извежда името на департамента с най-висока сумарна заплата на менажерите на
проекти от този департамент.

Забележка: Ако има
повече департаменти със сумарна заплата равна на най-високата сумарна заплата,
тези департаменти също да се изведат.

Select
top(1) with ties dp.deptname

From ("заявка от подточка А") dp

Order
by dp.salarySum desc

Created with Microsoft OneNote 2010

One place for all your notes and information