Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы (2011) / Бочаров, Кобец / Лабораторная работа 8.docx
Скачиваний:
60
Добавлен:
28.06.2014
Размер:
1.49 Mб
Скачать

Задание 4

Выдать статистику по всем учебным заведениям и категориям обу­чения вашего государства. Отчет должен начинаться с заголовка и циф­ры - общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: <название учебного заведе­ния> - <цифра>, не равная нулю, а заканчивается перечнем категорий обучения с цифрами, не равными нулю.

--Выдать статистику по всем учебным заведениям и категориям обу¬чения

--вашего государства. Отчет должен начинаться с заголовка и циф¬ры -

--общего количества записей по запросу. Далее совокупность таблиц, где каждая

--таблица начинается с заголовка: <название учебного заведе¬ния> - <цифра>,

--не равная нулю, а заканчивается перечнем категорий обучения с цифрами,

--не равными нулю.

create procedure lr8_4 as

declare @kat_itog int

declare @vuz_itog int

declare @summary int

declare @vuz_name char(20)

declare @kat_name char(16)

declare @vuz_temp char(20)

declare statistic cursor for

select nazvanie_vuza, kat_obucheniya, count(*) from arm

join kat_obuch on kat_obuch_k = cod

join vuz_gorod on vuz_k=cod_vuza

group by nazvanie_vuza,kat_obucheniya

order by nazvanie_vuza

--инициализация

select @vuz_itog = 0

select @summary = 0

open statistic

--пробный fetch

fetch statistic into @vuz_name,@kat_name,@kat_itog

--проверка статуса

--крах

if (@@fetch_status=-2)

begin

print 'Ошибка при выполнении первого FETCH'

close statistic

return

end

--отсутствие данных

if (@@fetch_status=-1)

begin

print 'Данные не найдены'

close statistic

return

end

--нормальный ход событий

select @vuz_itog = @vuz_itog+@kat_itog

select @summary = @summary + @kat_itog

select @vuz_temp = @vuz_name

print 'В вузе '+@vuz_name+' учится '+str(@kat_itog)+' человек/а с категорией '+@kat_name

while(@@FETCH_STATUS=0)

begin

--выборка следующей записи

fetch statistic into @vuz_name,@kat_name,@kat_itog

--если поменялся город,то:

if(@vuz_name!=@vuz_temp)

begin

print 'В вузе '+@vuz_temp+' всего учится '+str(@vuz_itog)+'человек/а'

select @vuz_temp = @vuz_name

select @vuz_itog = 0

end

--если закончились данные

if (@@FETCH_STATUS = -1)

begin

break

end

print 'В вузе '+@vuz_name+' учится '+str(@kat_itog)+' человек/а с категорией '+@kat_name

select @vuz_itog = @vuz_itog+@kat_itog

select @summary = @summary+@kat_itog

end

close statistic

print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'

print '-----------------------------'

print 'Всего по запросу - '+str(@summary)

deallocate statistic

return

Задание 5

Выдать статистику по учебным заведениям и категориям обучения вашего государства, включая цифры по выпуску 1993 года и по приему 1990 года по каждой категории обучения. Отчет должен начинаться с за­головка и цифры - общего количества записей по запросу. Далее сово­купность таблиц, где каждая таблица начинается с заголовка :<название учебного заведения> - <цифра>, не равная нулю, а заканчива­ется перечнем категорий обучения с тремя цифрами: 1) всего (не равная нулю); 2) выпуск 1993 г.; 3) прием 1990 г.

--Выдать статистику по учебным заведениям и категориям обучения вашего

--государства, включая цифры по выпуску 1993 года и по приему 1990 года

--по каждой категории обучения. Отчет должен начинаться с за¬головка и цифры -

--общего количества записей по запросу. Далее сово¬купность таблиц, где

--каждая таблица начинается с заголовка : <название учебного заведения>

--- <цифра>, не равная нулю, а заканчива¬ется перечнем категорий обучения

--с тремя цифрами: 1) всего (не равная нулю); 2) выпуск 1993 г.; 3) прием 1990 г.

create procedure lr8_5 as

declare @kat_itog int

declare @kat_itogv93 int

declare @kat_itogp90 int

declare @vuz_itog int

declare @vuz_itogv93 int

declare @vuz_itogp90 int

declare @summary int

declare @vuz_name char(20)

declare @kat_name char(16)

declare @vuz_temp char(20)

declare statistic cursor for

select nazvanie_vuza, kat_obucheniya, count(*), sum(CASE gok WHEN '93' THEN 1 ELSE 0 END), sum(CASE gp WHEN '90' THEN 1 ELSE 0 END) from arm

join kat_obuch on kat_obuch_k = cod

join vuz_gorod on vuz_k=cod_vuza

group by nazvanie_vuza,kat_obucheniya

order by nazvanie_vuza

--инициализация

select @vuz_itog = 0

select @vuz_itogv93 = 0

select @vuz_itogp90 = 0

select @summary = 0

open statistic

--пробный fetch

fetch statistic into @vuz_name,@kat_name,@kat_itog,@kat_itogv93,@kat_itogp90

--проверка статуса

--крах

if (@@fetch_status=-2)

begin

print 'Ошибка при выполнении первого FETCH'

close statistic

return

end

--отсутствие данных

if (@@fetch_status=-1)

begin

print 'Данные не найдены'

close statistic

return

end

--нормальный ход событий

select @vuz_itog = @vuz_itog+@kat_itog

select @vuz_itogv93 = @vuz_itogv93+@kat_itogv93

select @vuz_itogp90 = @vuz_itogp90+@kat_itogp90

select @summary = @summary + @kat_itog

select @vuz_temp = @vuz_name

print 'В вузе '+@vuz_name+' учится '+str(@kat_itog)+' человек/а с категорией '+@kat_name + ' из них в 93 выпустилось '+ str(@kat_itogv93)+', поступило в 90'+str(@kat_itogp90)

while(@@FETCH_STATUS=0)

begin

--выборка следующей записи

fetch statistic into @vuz_name,@kat_name,@kat_itog,@kat_itogv93,@kat_itogp90

--если поменялся город,то:

if(@vuz_name!=@vuz_temp)

begin

print 'В вузе '+@vuz_temp+' всего учится '+str(@vuz_itog)+'человек/а, из них выпустилось в 93 '+str(@vuz_itogv93)+', поступило в 90'+str(@vuz_itogp90)

select @vuz_temp = @vuz_name

select @vuz_itog = 0

select @vuz_itogp90 = 0

select @vuz_itogv93 = 0

end

--если закончились данные

if (@@FETCH_STATUS = -1)

begin

break

end

print 'В вузе '+@vuz_name+' учится '+str(@kat_itog)+' человек/а с категорией '+@kat_name + ' из них в 93 выпустилось '+ str(@kat_itogv93)+', поступило в 90'+str(@kat_itogp90)

select @vuz_itog = @vuz_itog+@kat_itog

select @vuz_itogv93 = @vuz_itogv93+@kat_itogv93

select @vuz_itogp90 = @vuz_itogp90+@kat_itogp90

select @summary = @summary+@kat_itog

end

close statistic

print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+'человек/а, из них выпустилось в 93 '+str(@vuz_itogv93)+', поступило в 90'+str(@vuz_itogp90)

print '-----------------------------'

print 'Всего по запросу - '+str(@summary)

deallocate statistic

return