Бази даних-20210115T104840Z-001 / Oracle_SQL_4
.pdfСоединение по условию, отличающемуся от равенства
SELECT DEPARTMENT.Name, DEPARTMENT.Fund
FROM FACULTY, DEPARTMENT
WHERE FACULTY.Fund < DEPARTMENT.Fund;
выводятся кафедры, которые имеют фонд финансирования, превышающий фонд финансирования ее факультета:
Самосоединение таблицы (1)
SELECT searched.Num
FROM SGROUP given, SGROUP searched
WHERE given.Num = 504 AND given.Year = 5 AND searched.Rating > given.Rating;
Вывести номера групп, рейтинг которых превышает рейтинг группы 504 пятого курса.
NUM
----------
408
505
2 строк выбрано
Самосоединение таблицы (2)
SELECT needed.Name
FROM TEACHER needed, TEACHER given
WHERE needed.Salary+needed.Rise> given.Salary+given.Rise AND
UPPER(given.Name) = 'СИДОРОВ';
Вывести фамилии преподавателей с зарплатой, превышающей зарплату Сидорова.
NAME
-----------
Резник
Ахромеев 2 строк выбрано.
Самосоединение таблицы (3)
SELECT DISTINCT t1.Name AS ФИО_1, t2.Name AS ФИО_2, s.Name AS Предмет, l1.Day AS День
FROM LECTURE l1, LECTURE l2, TEACHER t1, TEACHER t2, SUBJECT s
WHERE l1.SbjFK = l2.SbjFK AND LOWER(l1.Day) = LOWER(l2.Day) AND l1.TchFK = t1.TchPK AND l2.TchFK = t2.TchPK AND l1.SbjFK = s.SbjPK AND t1.Name < t2.Name;
ФИО_1 |
ФИО_2 |
ПРЕДМЕТ |
ДЕНЬ |
------------ -------------------- |
-------------------------------------- |
|
-------------- |
Витковский |
Хоменко |
операционные системы |
пнд |
Воробьев |
Радишевский |
проектирование компьютеров втр |
|
Кузнецов |
Марченко |
базы данных |
срд |
•3 строк выбрано.
Выдать пары преподавателей, которые читают одинаковые дисциплины в один и тот же день (с указанием какой именно дисциплины и в какой именно день).
ДОМАШНЕЕ ЗАДАНИЕ
Далее приводится 15 вариантов заданий. Каждый вариант состоит из 7 запросов, которые относятся к следующим категориям (в порядке их следования):
•1) Выражения во фразе SELECT
•2) Соединение таблиц
•3) Многократное соединение одной и той же таблицы
•4) Использование предиката BETWEEN
•5) Использование предикатов IN и LIKE
•6) Внешнее соединение, соединение не по предикату равенства
•7) Использование сложных логических условий
ВАРИАНТ 15(1) Выражения во фразе SELECT
По каждому преподавателю выведите его имя и процент отношения разности между ставкой и надбавкой и суммы ставки с надбавкой
SELECT Name, ((Salary-
Commission)*100)/(Salary+Commission)
AS "Процент"
FROM TEACHER;
ВАРИАНТ 15(2) Соединение таблиц
Вывести номера групп и их курсов кафедры ИПО, которые имеют кураторов-профессоров, читающих лекции в аудиториях корпуса 6
SELECT g.Num, g.Course
FROM DEPARTMENT d, TEACHER t, SGROUP g, LECTURE l, ROOM r
WHERE d.DepPK=g.DepFK AND g.Curator=t.TchPK AND t.TchPK=l.TchFK AND l.RomFK=r.RomPK AND
UPPER(d.Name)='ИПО' AND LOWER(t.Post)='профессор' AND r.Building=6;
ВАРИАНТ 15(3) Многократное соединение одной и
той же таблицы
Вывести номера групп, которым преподает преподаватель, являющийся куратором группы 304 3-го курса
SELECT result.Num
FROM SGROUP source, TEACHER t, LECTURE l, SGROUP result
WHERE source.Curator=t.TchPK AND t.TchPK=l.TchFK AND l.GrpFK=result.GrpPK AND source.Num=304 AND source.Course=3;
ВАРИАНТ 15(4) Использование предиката BETWEEN
Вывести имена преподавателей, которые проводят занятия в группах с количеством студентов в диапазоне 15-35 и в аудиториях с количеством мест в диапазоне 25-50
SELECT t.Name
FROM TEACHER t, ROOM r, SGROUP g, LECTURE l
WHERE l.TchFK=t.TchPK AND l.RomFK=r.RomPK AND l.GrpFK=g.GrpPK AND r.Seats BETWEEN 25 AND 50 AND g.Quantity
BETWEEN 15 AND 35;
ВАРИАНТ 15(5) Использование предикатов IN и LIKE
Вывести названия кафедр, группам которых на 3 курсе читают дисциплины, в названии которых имеется следующая подстрока: между буквами 'с'и 'д' имеются две любих других буквы.
SELECT d.Name
FROM DEPARTMENT d, SGROUP g, LECTURE l, SUBJECT s
WHERE d.DepPK=g.DepFK AND g.GrpPK=l.GrpFK AND l.SbjFK=s.SbjPK AND
g.Course=3 AND LOWER(s.Name) LIKE
'%с__д%';