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

Задание 3

Выдать статистику по городам и категориям обучения вашего го­сударства. Отчет должен начинаться с заголовка и цифры - общего коли­чества записей по запросу. Далее совокупность таблиц, где каждая таб­лица начинается с заголовка: ГОРОД <название> - ВСЕГО <цифра>, где <цифра> ^= 0, а заканчивается перечнем категорий обучения с цифрами, не равными нулю.

create procedure ko as

declare @gor char(20)

declare @ko char(25)

declare @kc integer

declare @gc integer

declare @ac integer

declare @gor1 char(20)

declare y cursor for

select vuz_gorod.nazvanie_goroda, kat_obuch.kat_obucheniya, count(*)

from bel join vuz_gorod on cod_vuza = vuz_k

join kat_obuch on kat_obuch_k = kat_obuch.cod

group by vuz_gorod.nazvanie_goroda, kat_obuch.kat_obucheniya

order by vuz_gorod.nazvanie_goroda

select @gc = 0

select @ac = 0

open y

fetch y into @gor, @ko, @kc

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 @ko+' -'+str(@kc)

select @gc = @gc + @kc

select @ac = @ac + @kc

while (@@FETCH_STATUS = 0)

begin

fetch y into @gor, @ko, @kc

if (@gor != @gor1) begin

print 'Город ' + @gor1 + ' - ' + str(@gc)

print '----------------------------'

select @gor1 = @gor

select @gc = 0

end

if (@@FETCH_STATUS = -1) break

print @ko + ' - ' + str(@kc)

select @gc = @gc + @kc

select @ac = @ac + @kc

end

close y

if (@@FETCH_STATUS = -2) begin

print 'Ошибка при выполенении FETCH'

return

end

print 'Город ' + @gor + ' - ' + str(@gc)

print '---------------------------'

print'всего по запосу - ' + str(@ac)

deallocate y

return

ko

Задание 4

Выдать статистику по всем учебным заведениям и категориям обу­чения вашего государства. Отчет должен начинаться с заголовка и циф­ры - общего количества записей по запросу. Далее совокупность таблиц, где каждая таблица начинается с заголовка: <название учебного заведе­ния> - <цифра>, не равная нулю, а заканчивается перечнем категорий обучения с цифрами, не равными нулю.

create procedure kv as

declare @vuz char(20)

declare @ko char(25)

declare @kc integer

declare @vc integer

declare @ac integer

declare @vuz1 char(20)

declare y cursor for

select vuz.uch_zavedenie, kat_obuch.kat_obucheniya, count(*)

from bel join vuz on cod = vuz_k

join kat_obuch on kat_obuch_k = kat_obuch.cod

group by vuz.uch_zavedenie, kat_obuch.kat_obucheniya

order by vuz.uch_zavedenie

select @vc = 0

select @ac = 0

open y

fetch y into @vuz, @ko, @kc

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 @ko+' -'+str(@kc)

select @vc = @vc + @kc

select @ac = @ac + @kc

while (@@FETCH_STATUS = 0)

begin

fetch y into @vuz, @ko, @kc

if (@vuz != @vuz1) begin

print 'ВУЗ ' + @vuz1 + ' - ' + str(@vc)

print '----------------------------'

select @vuz1 = @vuz

select @vc = 0

end

if (@@FETCH_STATUS = -1) break

print @ko + ' - ' + str(@kc)

select @vc = @vc + @kc

select @ac = @ac + @kc

end

close y

if (@@FETCH_STATUS = -2) begin

print 'Ошибка при выполенении FETCH'

return

end

print 'ВУЗ ' + @vuz + ' - ' + str(@vc)

print '---------------------------'

print'всего по запосу - ' + str(@ac)

deallocate y

return

kv

Задание 5

Выдать статистику по учебным заведениям и категориям обучения вашего государства, включая цифры по выпуску 1993 года и по приему 1990 года по каждой категории обучения. Отчет должен начинаться с за­головка и цифры - общего количества записей по запросу. Далее сово­купность таблиц, где каждая таблица начинается с заголовка : <название учебного заведения> - <цифра>, не равная нулю, а заканчива­ется перечнем категорий обучения с тремя цифрами: 1) всего (не равная нулю); 2) выпуск 1993 г.; 3) прием 1990 г.

alter procedure po as

declare @vuz char(20)

declare @ko char(25)

declare @gp char(2)

declare @gok char(2)

declare @kc integer

declare @vc integer

declare @ac integer

declare @pc integer

declare @oc integer

declare @vuz1 char(20)

declare y cursor for

select vuz.uch_zavedenie, kat_obuch.kat_obucheniya, sum(case gp when '90' then 1 else 0 end), sum(case gok when '93' then 1 else 0 end), count(*)

from bel join vuz on cod = vuz_k

join kat_obuch on kat_obuch_k = kat_obuch.cod

where gp = '90' or gok = '93'

group by vuz.uch_zavedenie, kat_obuch.kat_obucheniya

order by vuz.uch_zavedenie

select @vc = 0

select @ac = 0

open y

fetch y into @vuz, @ko, @gp, @gok, @kc

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 @ko+' -'+str(@kc)

print 'Принято в 1990м году -' + str(@gp)

print 'Окончили в 1993м году -' + str(@gok)

select @vc = @vc + @kc

select @ac = @ac + @kc

while (@@FETCH_STATUS = 0)

begin

fetch y into @vuz, @ko, @gp, @gok, @kc

if (@vuz != @vuz1) begin

print 'ВУЗ ' + @vuz1 + ' - ' + str(@vc)

print '----------------------------'

select @vuz1 = @vuz

select @vc = 0

end

if (@@FETCH_STATUS = -1) break

print @ko + ' - ' + str(@kc)

print 'Принято в 1990м году -' + str(@gp)

print 'Окончили в 1993м году -' + str(@gok)

select @vc = @vc + @kc

select @ac = @ac + @kc

end

close y

if (@@FETCH_STATUS = -2) begin

print 'Ошибка при выполенении FETCH'

return

end

print 'ВУЗ ' + @vuz + ' - ' + str(@vc)

print '---------------------------'

print'всего по запосу - ' + str(@ac)

deallocate y

return

po