Задание 12
Выдать статистику по специальностям и городам вашего государства. Отчет должен начинаться заголовком и цифрой - общим количеством записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: СПЕЦИАЛЬНОСТЬ <шифр> - ВСЕГО <цифра>, не равная нулю, а заканчивается перечнем названий городов с цифрами, не равными нулю.
alter procedure be6 as
declare @ac integer
declare z cursor for
select count(*)
from bel
open z
fetch z into @ac
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении первого FETCH'
close z
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close z
return
end
print 'Всего - ' + str(@ac )
print '----------------------'
close z
return
deallocate z
create procedure sg as
declare @spec char(25)
declare @gor char(6)
declare @sc integer
declare @gc integer
declare @spec1 char(25)
declare y cursor for
select spec, vuz_gorod.nazvanie_goroda, count(*)
from bel join vuz_gorod on vuz_k = vuz_gorod.cod_vuza
group by spec, vuz_gorod.nazvanie_goroda
order by spec
select @sc = 0
open y
fetch y into @spec, @gor, @gc
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении превого FETCH'
close y
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close y
return
end
select @spec1 = @spec
print @gor+' -'+str(@gc)
select @sc = @sc + @gc
while (@@FETCH_STATUS = 0)
begin
fetch y into @spec, @gor, @gc
if (@spec != @spec1) begin
print 'Специальность ' + @spec1 + ' - ' + str(@sc)
print '----------------------------'
select @spec1 = @spec
select @sc = 0
end
if (@@FETCH_STATUS = -1) break
print @gor + ' - ' + str(@gc)
select @sc = @sc + @gc
end
close y
if (@@FETCH_STATUS = -2) begin
print 'Ошибка при выполенении FETCH'
return
end
print 'Специальность ' + @spec + ' - ' + str(@sc)
deallocate y
return
exec be6
exec sg
Задание 13
Выдать статистику по городам и годам окончания вашего государства. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: ГОРОД <название> - ВСЕГО <цифра>, не равная нулю, а заканчивается перечнем годов окончания с цифрами, не равными нулю.
alter procedure be6 as
declare @ac integer
declare z cursor for
select count(*)
from bel
open z
fetch z into @ac
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении первого FETCH'
close z
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close z
return
end
print 'Всего - ' + str(@ac )
print '----------------------'
close z
return
deallocate z
create procedure gg as
declare @gor char(25)
declare @gok char(6)
declare @sc integer
declare @gc integer
declare @gor1 char(25)
declare y cursor for
select vuz_gorod.nazvanie_goroda, gok, count(*)
from bel join vuz_gorod on vuz_k = vuz_gorod.cod_vuza
group by vuz_gorod.nazvanie_goroda, gok
order by vuz_gorod.nazvanie_goroda
select @sc = 0
open y
fetch y into @gor, @gok, @gc
if(@@FETCH_STATUS = -2) begin
print 'Ошибка при выполнении превого FETCH'
close y
return
end
if(@@FETCH_STATUS = -1) begin
print 'Данные не найдены'
close y
return
end
select @gor1 = @gor
print @gok+' -'+str(@gc)
select @sc = @sc + @gc
while (@@FETCH_STATUS = 0)
begin
fetch y into @gor, @gok, @gc
if (@gor != @gor1) begin
print 'Город ' + @gor1 + ' - ' + str(@sc)
print '----------------------------'
select @gor1 = @gor
select @sc = 0
end
if (@@FETCH_STATUS = -1) break
print @gok + ' - ' + str(@gc)
select @sc = @sc + @gc
end
close y
if (@@FETCH_STATUS = -2) begin
print 'Ошибка при выполенении FETCH'
return
end
print 'Город ' + @gor + ' - ' + str(@sc)
deallocate y
return
exec be6
exec gg