Задание 6
Выдать статистику по учебным заведениям и годам окончания вашего государства. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: <название учебного заведения><цифра>, не равная нулю, а заканчивается перечнем годов окончания с цифрами, не равными нулю.
--Выдать статистику по учебным заведениям и годам окончания ва¬шего государства.
-- Отчет должен начинаться с заголовка и цифры - обще¬го количества записей по
-- запросу. Далее совокупность таблиц, где каж¬дая таблица начинается с--
--заголовка: <название учебного заведения> -<цифра>, не равная нулю,
--а заканчивается перечнем годов окончания с цифрами, не равными нулю.
create procedure lr8_6 as
declare @year_itog int
declare @vuz_itog int
declare @summary int
declare @vuz_name char(20)
declare @year_dig char(16)
declare @vuz_temp char(20)
declare statistic cursor for
select nazvanie_vuza, gok, count(*) from arm
join vuz_gorod on vuz_k=cod_vuza
group by nazvanie_vuza,gok
order by nazvanie_vuza
--инициализация
select @vuz_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @vuz_name,@year_dig,@year_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+@year_itog
select @summary = @summary + @year_itog
select @vuz_temp = @vuz_name
print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончивших учебу в '+@year_dig+' году'
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @vuz_name,@year_dig,@year_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(@year_itog)+' человек/а, окончвших учебу в '+@year_dig+' году'
select @vuz_itog = @vuz_itog+@year_itog
select @summary = @summary+@year_itog
end
close statistic
print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return
Задание 7
Выдать статистику по выпуску 1994 года вашего государства по всем учебным заведениям и категориям обучения. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (выпуску 1994 г.). Далее перечень таблиц, где каждая таблица начинается с заголовка: <название учебного заведения> - <цифра>, не равная нулю, а заканчивается перечнем категорий обучения с цифрами, не равными нулю.
--Выдать статистику по учебным заведениям и годам окончания ва¬шего государства.
-- Отчет должен начинаться с заголовка и цифры - обще¬го количества записей по
-- запросу. Далее совокупность таблиц, где каж¬дая таблица начинается с--
--заголовка: <название учебного заведения> -<цифра>, не равная нулю,
--а заканчивается перечнем годов окончания с цифрами, не равными нулю.
create procedure lr8_6 as
declare @year_itog int
declare @vuz_itog int
declare @summary int
declare @vuz_name char(20)
declare @year_dig char(16)
declare @vuz_temp char(20)
declare statistic cursor for
select nazvanie_vuza, gok, count(*) from arm
join vuz_gorod on vuz_k=cod_vuza
group by nazvanie_vuza,gok
order by nazvanie_vuza
--инициализация
select @vuz_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @vuz_name,@year_dig,@year_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+@year_itog
select @summary = @summary + @year_itog
select @vuz_temp = @vuz_name
print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончивших учебу в '+@year_dig+' году'
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @vuz_name,@year_dig,@year_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(@year_itog)+' человек/а, окончвших учебу в '+@year_dig+' году'
select @vuz_itog = @vuz_itog+@year_itog
select @summary = @summary+@year_itog
end
close statistic
print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return