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

Задание 7

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

create procedure zapr8_7 as

declare @yz char (25)/*переменная для названия учебного заведения*/

declare @kat char (16)/*переменная для названия категорий обучения*/

declare @it1 int/*переменная для итога по полю название категории обучения*/

declare @it2 int/*переменная для итога по полю название учебного заведения*/

declare @itall int/*переменная для итога по всему запросу*/

declare @yz1 char (25)/*переменная для названия учебного заведения*/

declare y cursor for

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

from azer join vuz_gorod on vuz_k=vuz_gorod.cod_vuza

join kat_obuch on kat_obuch_k=kat_obuch.cod

where vuz_gorod.nazvanie_stran like 'АЗЕРБАЙДЖАН%' and gok='94'

group by vuz_gorod.nazvanie_vuza,kat_obuch.kat_obucheniya

select @it2=0

select @itall=0

open y

fetch y into @yz,@kat,@it1

if(@@fetch_status=-2) begin

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

close y

return

end

if(@@fetch_status=-1) begin

print 'Данные не найдены'

close y

return

end

select @yz1=@yz

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

select @it2=@it2+@it1

select @itall=@itall+@it1

while (@@fetch_status=0)

begin

fetch y into @yz,@kat,@it1

if (@yz1!=@yz) begin

print 'учебное заведение '+@yz1+' - '+str(@it2)

select @yz1=@yz

select @it2=0

end

if(@@fetch_status=-1) break

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

select @it2=@it2+@it1

select @itall=@itall+@it1

end

close y

if(@@fetch_status=-2) begin

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

return

end

print 'учебное заведение '+@yz+' - '+str(@it2)

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

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

deallocate y

return

Задание 8

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

create procedure zapr8_8 as

declare @gp char (2)/*переменная для года поступления*/

declare @sp char (6)/*переменная для спеуиальности*/

declare @it1 int/*переменная для итога по полю специальность*/

declare @it2 int/*переменная для итога по полю год поступления*/

declare @itall int/*переменная для итога по всему запросу*/

declare @gp1 char (25)/*переменная для года поступления*/

declare y cursor for

select gp,spec,count(*)

from azer

group by gp,spec

select @it2=0

select @itall=0

open y

fetch y into @gp,@sp,@it1

if(@@fetch_status=-2) begin

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

close y

return

end

if(@@fetch_status=-1) begin

print 'Данные не найдены'

close y

return

end

select @gp1=@gp

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

select @it2=@it2+@it1

select @itall=@itall+@it1

while (@@fetch_status=0)

begin

fetch y into @gp,@sp,@it1

if (@gp1!=@gp) begin

print 'год приема '+@gp1+' - '+str(@it2)

select @gp1=@gp

select @it2=0

end

if(@@fetch_status=-1) break

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

select @it2=@it2+@it1

select @itall=@itall+@it1

end

close y

if(@@fetch_status=-2) begin

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

return

end

print 'год приема '+@gp+' - '+str(@it2)

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

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

deallocate y

return