Скачиваний:
44
Добавлен:
28.06.2014
Размер:
202.24 Кб
Скачать

Задание 4

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

create procedure z4 as

declare @vuz char (25)

declare @ko char (2)

declare @it1 int

declare @it2 int

declare @itall int

declare @vuz1 char (25)

declare y cursor for

select vuz_gorod.nazvanie_vuza, kat_obuch_k , count (*)

from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza

group by vuz_gorod.nazvanie_vuza, kat_obuch_k

order by vuz_gorod.nazvanie_vuza

select @it2=0

select @itall=0

open y

fetch y into @vuz, @ko, @it1

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(@it1)

select @it2=@it2+@it1

select @itall=@itall+@it1

while (@@fetch_status=0)

begin

fetch y into @vuz, @ko, @it1

if (@vuz1 !=@vuz) begin

print 'Название вуза ' + @vuz1 + ' Всего ' +str(@it2)

select @vuz1=@vuz

select @it2=0

end

if (@@fetch_status=-1) break

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

select @it2=@it2+@it1

select @itall=@itall+@it1

end

close y

if (@@fetch_status=-2) begin

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

return

end

print 'Название вуза' + @vuz + ' Всего ' +str(@it2)

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

print 'Всего по запросу - '+str(@itall)

deallocate y

return

Задание 5

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

create procedure z5 as

declare @vuz char (25)

declare @ko char (2)

declare @it1 int

declare @it2 int

declare @it3 int

declare @it4 int

declare @it5 int

declare @it6 int

declare @itall1 int

declare @itall2 int

declare @itall3 int

declare @vuz1 char (25)

declare y cursor for

select vuz_gorod.nazvanie_vuza, poss.kat_obuch_k , count (*), t.d, f.b

from poss join vuz_gorod on vuz_k=vuz_gorod.cod_vuza

join (select poss.vuz_k as a, count (*) as b from poss where gp like '90' group by poss.vuz_k) as f on f.a = poss.vuz_k

join (select poss.vuz_k as c, count(*) as d from poss where gok like '93' group by poss.vuz_k) as t on t.c = poss.vuz_k

group by vuz_gorod.nazvanie_vuza, kat_obuch_k, t.d, f.b

order by vuz_gorod.nazvanie_vuza

select @it2=0

select @itall1=0

select @it4=0

select @itall2=0

select @it6=0

select @itall3=0

open y

fetch y into @vuz, @ko, @it1, @it3, @it5

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(@it1) + ', 1993 g -' +str(@it3) + ', 1990 g -' +str(@it5)

select @it2=@it2+@it1

select @it4=@it4+@it3

select @it6=@it6+@it5

select @itall1=@itall1+@it1

select @itall2=@itall2+@it3

select @itall3=@itall3+@it5

while (@@fetch_status=0)

begin

fetch y into @vuz, @ko, @it1, @it3, @it5

if (@vuz1 !=@vuz) begin

print 'Учебное заведение - ' + @vuz1 + ' ВСЕГО -' +str(@it2) + ', 1993 g -' +str(@it4) + ', 1990 g -' +str(@it6)

select @vuz1=@vuz

select @it2=0

select @it4=0

select @it6=0

end

if (@@fetch_status=-1) break

print @ko+' - ' +str(@it1) + ', 1993 g -' +str(@it3) + ', 1990 g -' +str(@it5)

select @it2=@it2+@it1

select @it4=@it4+@it3

select @it6=@it6+@it5

select @itall1=@itall1+@it1

select @itall2=@itall2+@it3

select @itall3=@itall3+@it5

end

close y

if (@@fetch_status=-2) begin

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

return

end

print 'Учебное заведение - ' + @vuz1 + ' ВСЕГО -' + str(@it2) + ', 1993 год -' +str(@it4) + ', 1990 год -' +str(@it6)

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

print 'Всего по запросу - '+str(@itall1) + ', 1993 год -' +str(@itall2) + ', 1990 год -' +str(@itall3)

deallocate y

return

Соседние файлы в папке Беляков