Задание 10
Выдать статистику по выпуску 1993 года вашего государства по всем учебным заведениям и специальностям. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (выпуску 1993 г.). Далее перечень таблиц, где каждая таблица начинается с заголовка: <название учебного заведения> - <цифра>, не равная нулю, а заканчивается перечнем шифров специальностей с цифрами, не равными нулю.
alter procedure be4 as
declare @ac integer
declare x cursor for
select count(*)
from bel
where gok = '93'
open x
fetch x into @ac
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении первого FETCH'
close x
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close x
return
end
print 'Всего в 1993м году - ' + str(@ac )
print '----------------------'
close x
return
deallocate x
alter procedure vs as
declare @vuz char(25)
declare @spec char(6)
declare @sc integer
declare @vc integer
declare @vuz1 char(25)
declare y cursor for
select vuz.uch_zavedenie, spec, count(*)
from bel join vuz on vuz_k = cod
where gok = '93'
group by vuz.uch_zavedenie,spec
order by vuz.uch_zavedenie
select @vc = 0
open y
fetch y into @vuz, @spec, @sc
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении превого FETCH'
close y
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close y
return
end
select @vuz1 = @vuz
print @spec+' -'+str(@sc)
select @vc = @vc + @sc
while (@@FETCH_STATUS = 0)
begin
fetch y into @vuz, @spec, @sc
if (@vuz != @vuz1) begin
print 'ВУЗ ' + @vuz1 + ' - ' + str(@vc)
print '----------------------------'
select @vuz1 = @vuz
select @vc = 0
end
if (@@FETCH_STATUS = -1) break
print @spec + ' - ' + str(@sc)
select @vc = @vc + @sc
end
close y
if (@@FETCH_STATUS = -2) begin
print 'Ошибка при выполенении FETCH'
return
end
print 'ВУЗ ' + @vuz + ' - ' + str(@vc)
deallocate y
return
exec be4
exec vs
Задание 11
Выдать статистику по приему 1991 года вашего государства по всем категориям обучения и городам. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу (по приему 91-го года). Далее совокупность таблиц, где каждая таблица начинается с заголовка: <название категории обучения> - <цифра>, не равная нулю, а заканчивается перечнем названий городов с цифрами, не равными нулю.
create procedure be5 as
declare @ac integer
declare x cursor for
select count(*)
from bel
where gp = '94'
open x
fetch x into @ac
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении первого FETCH'
close x
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close x
return
end
print 'Всего в 1991м году - ' + str(@ac )
print '----------------------'
close x
return
deallocate x
create procedure kg as
declare @kat char(25)
declare @gor char(6)
declare @gc integer
declare @kc integer
declare @kat1 char(25)
declare y cursor for
select kat_obuch.kat_obucheniya, vuz_gorod.nazvanie_goroda, count(*)
from bel join vuz_gorod on vuz_k = vuz_gorod.cod_vuza
join kat_obuch on kat_obuch.cod = kat_obuch_k
where gp = '91'
group by kat_obuch.kat_obucheniya, vuz_gorod.nazvanie_goroda
order by kat_obuch.kat_obucheniya
select @kc = 0
open y
fetch y into @kat, @gor, @gc
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении превого FETCH'
close y
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close y
return
end
select @kat1 = @kat
print @gor+' -'+str(@gc)
select @kc = @kc + @gc
while (@@FETCH_STATUS = 0)
begin
fetch y into @kat, @gor, @gc
if (@kat != @kat1) begin
print 'Категория ' + @kat1 + ' - ' + str(@kc)
print '----------------------------'
select @kat1 = @kat
select @kc = 0
end
if (@@FETCH_STATUS = -1) break
print @gor + ' - ' + str(@gc)
select @kc = @kc + @gc
end
close y
if (@@FETCH_STATUS = -2) begin
print 'Ошибка при выполенении FETCH'
return
end
print 'Категория ' + @kat + ' - ' + str(@kc)
deallocate y
return
exec be5
exec kg