Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
28.06.2014
Размер:
227.84 Кб
Скачать

Лабораторная работа №8

Выполнили: Авдиенков О.А.

Шутова Е.С.

Группа: А-13-07

Преподаватель: Сидорова Н. П.

Задание 8

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

CREATE Procedure Proc8_8 AS

BEGIN

DECLARE @EnteranceYear VARCHAR (2)

DECLARE @Speciality VARCHAR (6)

DECLARE @SpecialityCount INT

DECLARE @YearCount INT

DECLARE @TotalCount INT

DECLARE @EnteranceYear1 VARCHAR (6)

DECLARE y cursor for

SELECT gp, spec, COUNT (*)

FROM bel

GROUP BY gp, spec

ORDER BY gp

SELECT @YearCount=0

SELECT @TotalCount=0

OPEN y

FETCH y INTO @EnteranceYear, @Speciality, @SpecialityCount

IF (@@FETCH_STATUS=-2)

BEGIN

PRINT 'Ошибка в FETCH'

CLOSE y

RETURN

END

IF (@@FETCH_STATUS=-1)

BEGIN

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

CLOSE y

RETURN

END

SELECT @EnteranceYear1=@EnteranceYear

PRINT @Speciality+' -'+str(@SpecialityCount)

SELECT @YearCount=@YearCount+@SpecialityCount

SELECT @TotalCount=@TotalCount+@SpecialityCount

WHILE (@@FETCH_STATUS=0)

BEGIN

FETCH y INTo @EnteranceYear, @Speciality, @SpecialityCount

IF (@EnteranceYear1 !=@EnteranceYear)

BEGIN

PRINT 'Год приема ' + @EnteranceYear1 + ' - ' +str(@YearCount)

SELECT @EnteranceYear1=@EnteranceYear

SELECT @YearCount=0

END

IF (@@FETCH_STATUS=-1)

BREAK

PRINT @Speciality + ' - ' +str(@SpecialityCount)

SELECT @YearCount=@YearCount+@SpecialityCount

SELECT @TotalCount=@TotalCount+@SpecialityCount

END

CLOSE y

IF (@@FETCH_STATUS=-2)

BEGIN

PRINT 'Ошибка в FETCH'

RETURN

END

PRINT 'Год приема ' + @EnteranceYear + ' - ' +str(@YearCount)

PRINT '----------------------------------'

PRINT 'Общее количество -'+str(@TotalCount)

DEALLOCATE y

RETURN

END

Задание 9

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

alter procedure Proc8_9 as

begin

declare @StudyType char (16)

declare @University char (25)

declare @UniverCount int

declare @StudyTypeCount int

declare @TotalCount int

declare @StudyType1 char (16)

declare y cursor for

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

from bel join vuz on vuz_k=vuz.cod

join kat_obuch on kat_obuch_k=kat_obuch.cod

group by kat_obuch.kat_obucheniya, vuz.uch_zavedenie

order by kat_obuch.kat_obucheniya

set @StudyTypeCount=0

set @TotalCount=0

open y

fetch y into @StudyType, @University, @UniverCount

if (@@fetch_status=-2)

begin

print 'ошибка в FETCH'

close y

return

end

if (@@fetch_status=-1)

begin

print 'Данных нет'

close y

return

end

set @StudyType1=@StudyType

print @University+' - '+str(@UniverCount)

set @StudyTypeCount=@StudyTypeCount+@UniverCount

set @TotalCount=@TotalCount+@UniverCount

while (@@fetch_status=0)

begin

fetch y into @StudyType, @University, @UniverCount

if (@StudyType1 !=@StudyType)

begin

print 'Категория обучения ' + @StudyType1 + ' - ' +str(@StudyTypeCount)

select @StudyType1=@StudyType

select @StudyTypeCount=0

end

if (@@fetch_status=-1)

break

print @University + ' - ' +str(@UniverCount)

set @StudyTypeCount=@StudyTypeCount+@UniverCount

set @TotalCount=@TotalCount+@UniverCount

end

close y

if (@@fetch_status=-2)

begin

print 'Ошибка в FETCH'

return

end

print 'Категория обучения ' + @StudyType + ' - ' +str(@StudyTypeCount)

print '+----------------------------------+'

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

deallocate y

return

end

Соседние файлы в папке Авдиенков, Шутова