Лабораторные работы (А-13-07) / Беляков / lab5
.doc
Отчёт к лабораторной работе №5
по Базам Данных
Выполнил студент группы
А-13-07
Беляков Р.Д.
Задание 8
Выдать статистику по категориям обучения учащихся вашего государства только прием 1991 года. Отчет должен начинаться заголовком и цифрой - общим количеством записей по запросу (по приему 91-го года). Далее таблица, включающая перечень категорий обучения с цифрами, не равными нулю.
select gp as STAT, count(*) as Total from poss where gp='91'
group by gp
select kat_obuch.kat_obucheniya, count(kat_obuch.kat_obucheniya) as Total
from poss join kat_obuch on kat_obuch_k=kat_obuch.cod
where gp ='91'
group by kat_obuch.kat_obucheniya
create procedure z8 as
select gp as STAT, count(*) as Total from poss where gp='91'
group by gp
select kat_obuch.kat_obucheniya, count(kat_obuch.kat_obucheniya) as Total
from poss join kat_obuch on kat_obuch_k=kat_obuch.cod
where gp ='91'
group by kat_obuch.kat_obucheniya
exec z8
Задание 9
Выдать статистику по вашему государству по следующим специальностям: 0401 , 0402, 0403 и 0405 (общее число по каждой специальности), а также количества мужчин и женщин по каждой из этих специальностей. Отчет должен начинаться с соответствующего заголовка. Далее таблица из четырех строчек, где каждая строчка включает шифр специальности и 3 цифры: всего, количество мужчин и количество женщин.
select a.spec [специализация], t [всего], e [женщин], h [мужчин]
from (
select spec , COUNT(spec) as e
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405) and pol = 'Æ')
group by spec
) as a join (
select spec , COUNT(spec) as h
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405) and pol = 'Ì')
group by spec) as b on a.spec = b.spec
join (
select spec , COUNT(spec) as t
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405))
group by spec) as q on q.spec = a.spec
--
create procedure zadan9 as
select a.spec [специализация], t [всего], e [женщин], h [мужчин]
from (
select spec , COUNT(spec) as e
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405) and pol = 'Æ')
group by spec
) as a join (
select spec , COUNT(spec) as h
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405) and pol = 'Ì')
group by spec) as b on a.spec = b.spec
join (
select spec , COUNT(spec) as t
from poss
where nomer in (select nomer from poss where spec in (0401 ,0402 ,0403 ,0405))
group by spec) as q on q.spec = a.spec
Задание 10
Выдать статистику по семейному положению учащихся вашего государства, заканчивающих учебу в 1994 или в 1995 году. Отчет должен начинаться с соответствующего заголовка. Далее - две таблицы, где каждая таблица начинается с заголовка: ГОД ВЫПУСКА <год> - ВСЕГО <цифра> (не равная нулю), а заканчивается перечнем семейных положений с цифрами, не равными нулю.
select gok as Stat, COUNT(*) as Total from poss where gok = '94'
group by gok
select family.family_status, count(family.family_status) as Total
from poss join family on poss.sem_polog_k=family.cod
where gok = '94'
group by family.family_status
select gok as Stat, COUNT(*) as Total from poss where gok = '95'
group by gok
select family.family_status, count(family.family_status) as Total
from poss join family on poss.sem_polog_k=family.cod
where gok = '95'
group by family.family_status
create procedure z10 as
select gok as Stat, COUNT(*) as Total from poss where gok = '94'
group by gok
select family.family_status, count(family.family_status) as Total
from poss join family on poss.sem_polog_k=family.cod
where gok = '94'
group by family.family_status
select gok as Stat, COUNT(*) as Total from poss where gok = '95'
group by gok
select family.family_status, count(family.family_status) as Total
from poss join family on poss.sem_polog_k=family.cod
where gok = '95'
group by family.family_status
exec z10
Задание 11
Выдать статистику по городам вашего государства и только по студентам (исключая другие категории обучения). Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу (всего студентов). Далее таблица, включающая перечень городов с цифрами, не равными нулю.
select kat_obuch_k as Stat, COUNT(*) as Total from poss where kat_obuch_k = '03'
group by kat_obuch_k
union all
select vuz_gorod.nazvanie_goroda, count(*)
from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where kat_obuch_k = '03'
group by vuz_gorod.nazvanie_goroda
create procedure z11 as
select kat_obuch_k as Stat, COUNT(*) as Total from poss where kat_obuch_k = '03'
group by kat_obuch_k
union all
select vuz_gorod.nazvanie_goroda, count(*)
from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where kat_obuch_k = '03'
group by vuz_gorod.nazvanie_goroda
exec z11
Задание 12
Выдать статистику по учебным заведениям вашего государства, включая цифры по выпуску 1994 года. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень названий учебных заведений с двумя цифрами (у каждого учебного заведения): 1) всего по учебному заведению (не равная нулю); 2) выпуск 1994 года.
select *
from (select 'всего' [Название института] , count(*) [Всего в институте] from poss join vuz on vuz_k=vuz.cod) as e
join (select count(*) [1994 ãîä] from poss join vuz on vuz_k=vuz.cod where poss.gok = '94') as f on 1=1
union all
select u [специализация], t [всего], e [1994 год]
from (
select vuz.uch_zavedenie u, count(*) t
from poss join vuz on vuz_k=vuz.cod
group by vuz.uch_zavedenie
) as a
join (
select vuz.uch_zavedenie y, count(*) e
from poss join vuz on vuz_k=vuz.cod
where gok='94'
group by vuz.uch_zavedenie
)
as q on q.y = a.u
Задание 13
Выдать статистику по категориям обучения учащихся вашего государства, исключая студентов-заочников и аспирантов-заочников. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень требуемых категорий обучения с цифрами, не равными нулю.
select 'Stat', COUNT(*) 'as Total' from poss where kat_obuch_k not in ('08', '04')
select kat_obuch.kat_obucheniya, count(*)
from poss join kat_obuch on kat_obuch_k=kat_obuch.cod
where kat_obuch_k not in ('08', '04')
group by kat_obuch.kat_obucheniya
create procedure z12 as
select 'Stat', COUNT(*) 'as Total' from poss where kat_obuch_k not in ('08', '04')
select kat_obuch.kat_obucheniya, count(*)
from poss join kat_obuch on kat_obuch_k=kat_obuch.cod
where kat_obuch_k not in ('08', '04')
group by kat_obuch.kat_obucheniya
exec z13
Задание 14
Выдать статистику по специальностям 4-ой, 5-ой и 6-ой групп (т. е. специальности от 0401 до 0699) учащихся вашего государства. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень требуемых шифров специальностей с цифрами, не равными нулю.
select 'всего студентов', count(*) as Total from poss where spec between '000401' and '000699'
select spec, count(*)
from poss
where spec between '000401' and '000699'
group by spec
create preocedure z13
select 'всего студентов', count(*) as Total from poss where spec between '000401' and '000699'
select spec, count(*)
from poss
where spec between '000401' and '000699'
group by spec
exec z14
Задание 15
Выдать статистику по учебным заведениям столицы вашего государства. Отчет должен начинаться с заголовка, включающего название города и цифру - общее количество записей по запросу (всего по столице). Далее таблица, включающая перечень требуемых учебных заведений с цифрами, не равными нулю.
select 'всего по Москве', COUNT(*)as Total from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where vuz_k in (select cod_vuza from vuz_gorod where nazvanie_goroda like 'МОСКВА')
select vuz_gorod.nazvanie_vuza, count(*)
from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where vuz_k in (select cod_vuza from vuz_gorod where nazvanie_goroda like 'МОСКВА')
group by vuz_gorod.nazvanie_vuza
create procedure z15 as
select 'всего по Москве', COUNT(*)
from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where vuz_k in (select cod_vuza from vuz_gorod where nazvanie_goroda like 'МОСКВА')
union all
select vuz_gorod.nazvanie_vuza, count(*)
from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza
where vuz_k in (select cod_vuza from vuz_gorod where nazvanie_goroda like 'МОСКВА')
group by vuz_gorod.nazvanie_vuza
exec z15