Санкт-Петербургский научный исследовательский университет информационных технологий, механики и оптики
Кафедра Систем управления и информатики
Отчет по лабораторной работе №1
по курсу «Информационное обеспечение систем управления»
Выполнил: |
Студент гр.5145 Бахтина Н.Ю. |
Преподаватель: |
Болтунов Г.И. |
Санкт-Петербург
2011 г.
1. Схема данных
2. Запросы
2.1. Вычислить оценки по всем тестам из условия, что если num >=11, то оценка 5, если num >=9, то оценка 4, если num >=7, то оценка 3, иначе 2.
Текст запроса:
select g.g_number, s.f, s.i, t.tname,
case when r.num>=11 then 5
when r.num>=9 then 4
when r.num>=7 then 3
else 2 end AS Rate
from result r, students s, tests t, groups g
where s.sid = r.sid
and g.gid = s.gid
and r.tid = t.tid
order by 1,2,4;
Результат выполнения запроса:
G_NUMBER |
F |
I |
TNAME |
RATE |
5145 |
Бахтина |
Нина |
тест_1 |
5 |
5145 |
Бахтина |
Нина |
тест_2 |
5 |
5145 |
Бахтина |
Нина |
тест_3 |
5 |
5145 |
Вихров |
Алексей |
тест_1 |
4 |
5145 |
Вихров |
Алексей |
тест_2 |
3 |
5145 |
Вихров |
Алексей |
тест_3 |
2 |
5145 |
Гейсамн |
Александр |
тест_1 |
2 |
5145 |
Гейсамн |
Александр |
тест_2 |
5 |
5145 |
Гейсамн |
Александр |
тест_3 |
5 |
5145 |
Дробышев |
Иван |
тест_1 |
4 |
5145 |
Дробышев |
Иван |
тест_2 |
4 |
5145 |
Дробышев |
Иван |
тест_3 |
2 |
5145 |
Кузьмичев |
Антон |
тест_1 |
3 |
5145 |
Кузьмичев |
Антон |
тест_2 |
4 |
5145 |
Кузьмичев |
Антон |
тест_3 |
3 |
5147 |
Васильченко |
Екатерина |
тест_1 |
2 |
5147 |
Васильченко |
Екатерина |
тест_2 |
2 |
5147 |
Васильченко |
Екатерина |
тест_3 |
3 |
5147 |
Гайдамакина |
Оксана |
тест_1 |
3 |
5147 |
Гайдамакина |
Оксана |
тест_2 |
4 |
5147 |
Гайдамакина |
Оксана |
тест_3 |
3 |
5147 |
Грушихин |
Алексей |
тест_1 |
3 |
5147 |
Грушихин |
Алексей |
тест_2 |
2 |
5147 |
Грушихин |
Алексей |
тест_3 |
2 |
5147 |
Даниленок |
Ксения |
тест_1 |
2 |
5147 |
Даниленок |
Ксения |
тест_2 |
2 |
5147 |
Даниленок |
Ксения |
тест_3 |
2 |
5147 |
Кириллов |
Даниил |
тест_1 |
3 |
5147 |
Кириллов |
Даниил |
тест_2 |
2 |
5147 |
Кириллов |
Даниил |
тест_3 |
3 |
5148 |
Асекретов |
Константин |
тест_1 |
2 |
5148 |
Асекретов |
Константин |
тест_2 |
2 |
5148 |
Асекретов |
Константин |
тест_3 |
3 |
5148 |
Виноградова |
Анастасия |
тест_1 |
5 |
5148 |
Виноградова |
Анастасия |
тест_2 |
5 |
5148 |
Виноградова |
Анастасия |
тест_3 |
5 |
5148 |
Власов |
Сергей |
тест_1 |
2 |
5148 |
Власов |
Сергей |
тест_2 |
2 |
5148 |
Власов |
Сергей |
тест_3 |
2 |
5148 |
Волков |
Дмитрий |
тест_1 |
3 |
5148 |
Волков |
Дмитрий |
тест_2 |
3 |
5148 |
Волков |
Дмитрий |
тест_3 |
2 |
5148 |
Гераськин |
Сергей |
тест_1 |
2 |
5148 |
Гераськин |
Сергей |
тест_2 |
2 |
5148 |
Гераськин |
Сергей |
тест_3 |
5 |
5149 |
Симкин |
Евгений |
тест_1 |
4 |
5149 |
Симкин |
Евгений |
тест_2 |
5 |
5149 |
Симкин |
Евгений |
тест_3 |
5 |
5149 |
Смирнов |
Михаил |
тест_1 |
2 |
5149 |
Смирнов |
Михаил |
тест_2 |
2 |
5149 |
Смирнов |
Михаил |
тест_3 |
4 |
2.2. Список студентов с указанием общего количества пропущенных тестов для каждого студента.
Текст запроса:
select groups.g_number,
students.f,
students.i,
count(result.tid) as Kol
from students,
result,
groups
group by students.f, students.i, groups.g_number, result.num,
students.sid, result.sid,
groups.gid, students.gid
having result.num = 0
and students.sid = result.sid
and groups.gid = students.gid;
Результат выполнения запроса:
G_NUMBER |
F |
I |
KOL |
5147 |
Кириллов |
Даниил |
1 |
5147 |
Даниленок |
Ксения |
1 |
5148 |
Волков |
Дмитрий |
1 |
5148 |
Власов |
Сергей |
2 |
2.3. Список студентов с указанием общего количества несданных тестов (пропущенных или сданных на оценку 2 – менее 7 баллов).
Текст запроса:
select groups.g_number,
students.f,
students.i,
count(result.tid) as Kol
from students,
result,
groups
where students.sid = result.sid
and groups.gid = students.gid
and (result.num is null or result.num<7)
group by students.f, students.i, groups.g_number
order by 4 desc,1;
Результат выполнения запроса:
G_NUMBER |
F |
I |
KOL |
5147 |
Васильченко |
Екатерина |
3 |
5147 |
Даниленок |
Ксения |
3 |
5148 |
Власов |
Сергей |
3 |
5147 |
Кириллов |
Даниил |
2 |
5147 |
Грушихин |
Алексей |
2 |
5148 |
Асекретов |
Константин |
2 |
5148 |
Гераськин |
Сергей |
2 |
5149 |
Смирнов |
Михаил |
2 |
5145 |
Гейсамн |
Александр |
1 |
5145 |
Вихров |
Алексей |
1 |
5145 |
Дробышев |
Иван |
1 |
5148 |
Волков |
Дмитрий |
1 |
2.4. Найти средний балл каждого студента по всем тестам.
Текст запроса:
select groups.g_number,
students.f,
students.i,
round(avg(result.num),2) as Sr_Ball
from groups,
students,
result
where students.gid = groups.gid
and result.sid = students.sid
group by groups.g_number,
students.f,
students.i
order by 4 desc, 1, 2;
Результат выполнения запроса:
G_NUMBER |
F |
I |
SR_BALL |
5145 |
Бахтина |
Нина |
11,67 |
5148 |
Виноградова |
Анастасия |
11,67 |
5149 |
Симкин |
Евгений |
10,67 |
5145 |
Гейсамн |
Александр |
9,33 |
5145 |
Вихров |
Алексей |
8,5 |
5145 |
Дробышев |
Иван |
8 |
5145 |
Кузьмичев |
Антон |
8 |
5147 |
Гайдамакина |
Оксана |
8 |
5148 |
Асекретов |
Константин |
6,33 |
5147 |
Васильченко |
Екатерина |
6 |
5148 |
Гераськин |
Сергей |
6 |
5149 |
Смирнов |
Михаил |
5,67 |
5148 |
Волков |
Дмитрий |
5 |
5147 |
Грушихин |
Алексей |
4,67 |
5147 |
Кириллов |
Даниил |
4 |
5147 |
Даниленок |
Ксения |
2,67 |
5148 |
Власов |
Сергей |
0,67 |
2.5. Найти средний балл каждого теста по всем студентам.
Текст запроса:
select tests.tname,
round(avg(result.num),2) as Sr_Ball
from students,
result,
tests
where result.sid = students.sid
and result.tid = tests.tid
group by tests.tname
order by sr_ball desc;
Результат выполнения запроса:
TNAME |
SR_BALL |
тест_2 |
7,29 |
тест_3 |
6,67 |
тест_1 |
6,59 |
2.6. Найти средний балл каждой группы по всем тестам.
Текст запроса:
select groups.g_number,
round(avg(result.num),2) as Sr_Ball
from students,
result,
groups
where result.sid = students.sid
and groups.gid = students.gid
group by groups.g_number
order by sr_ball desc;
Результат выполнения запроса:
G_NUMBER |
SR_BALL |
5145 |
9,14 |
5149 |
8,17 |
5148 |
5,93 |
5147 |
5 |