Задание 8
Выдать статистику по годам приема и по специальностям учащихся вашего государства. Отчет должен начинаться с заголовка и цифры общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: <год приема> - <цифра>, не равная нулю, а заканчивается перечнем шифров специальностей с цифрами, не равными нулю.
--Выдать статистику по годам приема и по специальностям учащих¬ся вашего
--государства. Отчет должен начинаться с заголовка и цифры -общего количества
--записей по запросу. Далее совокупность таблиц, где каждая таблица
--начинается с заголовка: <год приема> - <цифра>, не равная нулю, а
--заканчивается перечнем шифров специальностей с цифра-ми, не равными нулю.
create procedure lr8_8 as
declare @spec_itog int
declare @y_itog int
declare @summary int
declare @year_d char(20)
declare @spec_name char(16)
declare @year_temp char(20)
declare statistic cursor for
select spec, gp, count(*) from arm
group by gp,spec
order by gp
--инициализация
select @y_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @year_d,@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 @y_itog = @y_itog+@spec_itog
select @summary = @summary + @spec_itog
select @year_temp = @year_d
print 'В году '+@year_d+' принято '+str(@spec_itog)+' человек/а, на специальность '+@spec_name
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @year_d,@spec_name,@spec_itog
--если поменялся город,то:
if(@year_d!=@year_temp)
begin
print 'В году '+@year_temp+' всего принято '+str(@y_itog)+'человек/а'
select @year_temp = @year_d
select @y_itog = 0
end
--если закончились данные
if (@@FETCH_STATUS = -1)
begin
break
end
print 'В году '+@year_d+' принято '+str(@spec_itog)+' человек/а, на специальность '+@spec_name
select @y_itog = @y_itog+@spec_itog
select @summary = @summary+@spec_itog
end
close statistic
print 'В году '+@year_d+' всего принято '+str(@y_itog)+' человек/а'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return
Задание 9
Выдать статистику по категориям обучения и учебным заведениям вашего государства. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: <категория обучения> - <цифра>, не равная нулю, а заканчивается перечнем учебных заведений с цифрами, не равными нулю.
create procedure lr8_9 as
declare @v_itog int
declare @k_itog int
declare @summary int
declare @k_name char(20)
declare @v_name char(16)
declare @k_temp char(20)
declare statistic cursor for
select kat_obucheniya,nazvanie_vuza, count(*) from arm
join kat_obuch on kat_obuch_k = cod
join vuz_gorod on vuz_k=cod_vuza
group by kat_obucheniya,nazvanie_vuza
order by kat_obucheniya
--инициализация
select @k_itog = 0
select @summary = 0
open statistic
--пробный fetch
fetch statistic into @k_name,@v_name,@v_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+@v_itog
select @summary = @summary + @v_itog
select @k_temp = @k_name
print 'По категории '+@k_name+' учится '+str(@v_itog)+' человек/а в вузе '+@v_name
while(@@FETCH_STATUS=0)
begin
--выборка следующей записи
fetch statistic into @k_name,@v_name,@v_itog
--если поменялся город,то:
if(@k_name!=@k_temp)
begin
print 'По категории '+@k_temp+' всего учится '+str(@k_itog)+'человек/а'
select @k_temp = @k_name
select @k_itog = 0
end
--если закончились данные
if (@@FETCH_STATUS = -1)
begin
break
end
print 'По категории '+@k_name+' учится '+str(@v_itog)+' человек/а в вузе '+@v_name
select @k_itog = @k_itog+@v_itog
select @summary = @summary+@v_itog
end
close statistic
print 'По категории '+@k_name+' всего учится '+str(@k_itog)+' человек/а'
print '-----------------------------'
print 'Всего по запросу - '+str(@summary)
deallocate statistic
return