Лабораторные работы (А-13-07) / Дудкина, Захаров / Отчет по лабораторной работе №5
.docxМосковский Энергетический Институт, Технический Университет
ЛАБОРАТОРНАЯ РАБОТА №5
Студенты: Дудкина А., Захаров Д.
Группа: А-13-07
Вариант: 1
Преподаватель: Сидорова Н.П.
2010г.
Цель работы
-
Научиться выполнять одномерные статистические запросы по одной и по нескольким таблицам БД.
-
Практически освоить создание и использование простых хранимых процедур для выполнения запросов.
Задания
Задание 1
Выдать статистику по учебным заведениям вашего государства только прием 1990 года. Отчет должен начинаться заголовком и цифрой общим количеством записей по запросу (по приему 90-го года). Далее таблица, включающая перечень учебных заведений с цифрами, не равными нулю.
Запрос:
create procedure z1 as
select COUNT(*) as 'Количество принятых в 1990г.' from cir
where cir.gp = '90'
select V.uch_zavedenie, COUNT(*) as 'Принято в 1990г.' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.gp = '90'
group by V.uch_zavedenie
having COUNT(*) > 0
Результат:
Задание 2
Выдать статистику по городам вашего государства. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень городов с цифрами, не равными нулю.
Запрос:
create procedure z2 as
select COUNT(*) as 'Общее количество человек' from cir
select V.nazvanie_goroda, COUNT(*) as 'Количество человек' from cir as G
join vuz_gorod as V on G.vuz_k = V.cod_vuza
group by V.nazvanie_goroda
having COUNT(*) > 0
Результат:
Задание 3
Выдать статистику по вашему государству по следующим специальностям: 0202, 0203, 0205, 0206 (общее число по каждой специальности), а также в каких учебных заведениях и сколько обучается по этим специальностям. Отчет должен начинаться с соответствующего заголовка. Далее четыре таблицы, где каждая таблица начинается с заголовка: СПЕЦИАЛЬНОСТЬ <шифр> - ВСЕГО <цифра> (не равная нулю), а заканчивается перечнем учебных заведений с цифрами, не равными нулю.
Запрос:
create procedure z3 as
select COUNT (*) as 'Общее количество студентов по данным специальностям' from cir
where spec in ('002105', '002908', '002201', '000655')
select G.spec as 'Специальность 002105', V.uch_zavedenie, COUNT(*) as 'Количество групп', SUM(COUNT(*)) OVER() as 'Всего' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.spec = '002105'
Group by G.spec, V.uch_zavedenie
HAVING COUNT(*) > 0;
select G.spec as 'Специальность 002908', V.uch_zavedenie, COUNT(*) as 'Количество групп', SUM(COUNT(*)) OVER() as 'Всего' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.spec = '002908'
Group by G.spec, V.uch_zavedenie
HAVING COUNT(*) > 0;
select G.spec as 'Специальность 002201', V.uch_zavedenie, COUNT(*) as 'Количество групп', SUM(COUNT(*)) OVER() as 'Всего' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.spec = '002201'
Group by G.spec, V.uch_zavedenie
HAVING COUNT(*) > 0;
select G.spec as 'Специальность 000655', V.uch_zavedenie, COUNT(*) as 'Количество групп', SUM(COUNT(*)) OVER() as 'Всего' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.spec = '000655'
Group by G.spec, V.uch_zavedenie
HAVING COUNT(*) > 0;
Результат:
Задание 4
Выдать статистику по учебным заведениям вашего государства и только по лицам мужского пола. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (всего мужчин). Далее таблица, включающая перечень учебных заведений с цифрами, не равными нулю.
Запрос:
create procedure z4 as
select COUNT(*) as 'Общее количество мужчин' from cir
where pol = 'М';
select V.uch_zavedenie, COUNT(*) as 'Количество мужчин' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.pol = 'М'
group by V.uch_zavedenie
having COUNT(*) > 0
Результат:
Задание 5
Выдать статистику по всем специальностям вашего государства и только по студентам, заканчивающим учебу в 1994 году. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу (всего студентов-выпускников 1994 г.). Далее таблица, включающая перечень шифров специальностей с цифрами, не равными нулю.
Запрос:
create procedure z5 as
select COUNT(*) as 'Общее количество студентов-выпускников 1994г.' from cir
where gok = '94'
select G.spec, COUNT(*) as 'Количество студентов-выпускников 1994г.' from cir as G
join vuz as V on G.vuz_k = V.cod
where G.gok = '94'
group by G.spec
having COUNT(*) > 0
Результат:
Задание 6
Выдать статистику по годам приема учащихся вашего государства. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень годов приема с цифрами, не равными нулю.
Запрос:
create procedure z6 as
select COUNT(*) as 'Общее количество принятых студентов' from cir
select G.gp, COUNT(*) as 'Количество принятых студентов' from cir as G
group by G.gp
having COUNT(*) > 0
Результат:
Задание 7
Выдать статистику по годам окончания учебы учащихся вашего государства. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень годов окончания с цифрами, не равными нулю.
Запрос:
create procedure z7 as
select COUNT(*) as 'Общее количество студентов' from cir
select G.gok, COUNT(*) as 'Количество студентов' from cir as G
group by G.gok
having COUNT(*) > 0
Результат: