Задание 10
Выдать статистику по выпуску 1993 года вашего государства по всем учебным заведениям и специальностям. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (выпуску 1993 г.). Далее перечень таблиц, где каждая таблица начинается с заголовка: <название учебного заведения> - <цифра>, не равная нулю, а заканчивается перечнем шифров специальностей с цифрами, не равными нулю.
--Выдать статистику по выпуску 1993 года вашего государства по всем учебным
--заведениям и специальностям. Отчет должен начинаться с заголовка и цифры
-- - общего количества записей по запросу (выпуску 1993 г.). Далее перечень
--таблиц, где каждая таблица начинается с за-головка: <название учебного
--заведения> - <цифра>, не равная нулю, а заканчивается перечнем шифров
--специальностей с цифрами, не равными нулю.
create procedure lr8_10 as
declare @spec_itog int
declare @vuz_itog int
declare @summary int
declare @vuz_name char(20)
declare @spec_name char(6)
declare @vuz_temp char(20)
declare statistic cursor for
select nazvanie_vuza, spec, count(*) from arm
join vuz_gorod on vuz_k=cod_vuza
where gok = '93'
group by nazvanie_vuza,spec
order by nazvanie_vuza
--инициализация
select @vuz_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @vuz_name,@spec_name,@spec_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+@spec_itog
select @summary = @summary + @spec_itog
select @vuz_temp = @vuz_name
print 'В вузе '+@vuz_name+' училось '+str(@spec_itog)+' человек/а по сепциальности '+@spec_name+' окончивших в 93'
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @vuz_name,@spec_name,@spec_itog
--если поменялся город,то:
if(@vuz_name!=@vuz_temp)
begin
print 'В вузе '+@vuz_temp+' всего учится '+str(@vuz_itog)+'человек/а'+' окончивших в 93'
select @vuz_temp = @vuz_name
select @vuz_itog = 0
end
--если закончились данные
if (@@FETCH_STATUS = -1)
begin
break
end
print 'В вузе '+@vuz_name+' училось '+str(@spec_itog)+' человек/а, по специальности '+@spec_name+' окончивших в 93'
select @vuz_itog = @vuz_itog+@spec_itog
select @summary = @summary+@spec_itog
end
close statistic
print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'+' окончивших в 93'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return
Задание 11
Выдать статистику по приему 1991 года вашего государства по всем категориям обучения и городам. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (по приему 91-го года). Далее совокупность таблиц, где каждая таблица начинается с заголовка: <название категории обучения> - <цифра>, не равная нулю, а заканчивается перечнем названий городов с цифрами, не равными нулю.
create procedure lr8_11 as
declare @city_itog int
declare @k_itog int
declare @summary int
declare @k_name char(20)
declare @city_name char(16)
declare @k_temp char(20)
declare statistic cursor for
select kat_obucheniya,nazvanie_goroda, count(*) from arm
join kat_obuch on kat_obuch_k = cod
join vuz_gorod on vuz_k=cod_vuza
where gp = '91'
group by kat_obucheniya,nazvanie_goroda
order by kat_obucheniya
--инициализация
select @k_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @k_name,@city_name,@city_itog
--проверка статуса
--крах
if (@@fetch_status=-2)
begin
print 'Ошибка при выполнении первого FETCH'
close statistic
return
end
--отсутствие данных
if (@@fetch_status=-1)
begin
print 'Данные не найдены'
close statistic
return
end
--нормальный ход событий
select @k_itog = @k_itog+@city_itog
select @summary = @summary + @city_itog
select @k_temp = @k_name
print 'По категории '+@k_name+' учится '+str(@city_itog)+' человек/а,поступивших в 91, в городе '+@city_name
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @k_name,@city_name,@city_itog
--если поменялся город,то:
if(@k_name!=@k_temp)
begin
print 'По категории '+@k_temp+' всего учится '+str(@k_itog)+'человек/а,поступивших в 91'
select @k_temp = @k_name
select @k_itog = 0
end
--если закончились данные
if (@@FETCH_STATUS = -1)
begin
break
end
print 'По категории '+@k_name+' учится '+str(@city_itog)+' человек/а,поступивших в 91, в городе '+@city_name
select @k_itog = @k_itog+@city_itog
select @summary = @summary+@city_itog
end
close statistic
print 'По категории '+@k_name+' всего учится '+str(@k_itog)+' человек/а,поступивших в 91'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return