Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы (2011) / Ганишев / Лабораторная работа 8.docx
Скачиваний:
43
Добавлен:
28.06.2014
Размер:
261.1 Кб
Скачать

Задание 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