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

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

ИНСТИТУТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ

Лабораторная работа № 5.

Одномерные статические запросы и хранимые процедуры.

Выполнили

студенты группы А-13-08

каф. Прикладной Математики

Буренков Сергей

Захаров Антон

Москва, 2011

Задание 1

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

Запросы:

Вариант 1 (в диалоговом SQL)

SELECT COUNT(*) AS 'Было принято учащихся в 1990 году'

FROM arm

WHERE gp='90'

go

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество принятых учащихся'

FROM arm

JOIN vuz ON vuz.cod = arm.vuz_k

WHERE gp='90'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

Вариант 2 (с помощью хранимой процедуры)

CREATE PROCEDURE lab5_p1 AS

BEGIN

SELECT COUNT(*) AS 'Было принято учащихся в 1990 году'

FROM arm

WHERE gp='90'

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество принятых учащихся'

FROM arm

JOIN vuz ON vuz.cod = arm.vuz_k

WHERE gp='90'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

END

Результаты:

Вариант 1 (в диалоговом SQL)

Вариант 2 (с помощью хранимой процедуры)

Задание 2

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

Запросы:

Вариант 1 (в диалоговом SQL)

SELECT COUNT(*) AS 'Всего учебных заведений'

FROM vuz_gorod

WHERE nazvanie_stran LIKE('АРМЕНИЯ %')

go

SELECT vuz_gorod.nazvanie_goroda AS 'Название города', COUNT(*) AS 'Количество учебных заведений'

FROM vuz_gorod

JOIN gorod ON gorod.cod = vuz_gorod.cod_goroda

WHERE nazvanie_stran LIKE('АРМЕНИЯ %')

GROUP BY vuz_gorod.nazvanie_goroda

ORDER BY vuz_gorod.nazvanie_goroda

Вариант 2 (с помощью хранимой процедуры)

CREATE PROCEDURE lab5_p2 AS

BEGIN

SELECT COUNT(*) AS 'Всего учебных заведений'

FROM vuz_gorod

WHERE nazvanie_stran LIKE('АРМЕНИЯ %')

SELECT vuz_gorod.nazvanie_goroda AS 'Название города', COUNT(*) AS 'Количество учебных заведений'

FROM vuz_gorod

JOIN gorod ON gorod.cod = vuz_gorod.cod_goroda

WHERE nazvanie_stran LIKE('АРМЕНИЯ %')

GROUP BY vuz_gorod.nazvanie_goroda

ORDER BY vuz_gorod.nazvanie_goroda

END

Результаты:

Вариант 1 (в диалоговом SQL)

Вариант 2 (с помощью хранимой процедуры)

Задание 3

Выдать статистику по вашему государству по следующим специаль­ностям: 0202, 0203, 0205, 0206 (общее число по каждой специальности), а также в каких учебных заведениях и сколько обучается по этим специ­альностям. Отчет должен начинаться с соответствующего заголовка. Да­лее четыре таблицы, где каждая таблица начинается с заголовка: СПЕЦИАЛЬНОСТЬ <шифр> - ВСЕГО <цифра> (не равная нулю), а заканчивает­ся перечнем учебных заведений с цифрами, не равными нулю.

Запросы:

Вариант 1 (в диалоговом SQL)

SELECT 'Статистика по специальностям 0202, 0203, 0205 и 0206'

go

SELECT '0202' AS 'Специальность', COUNT(*) AS 'Всего'

FROM arm

WHERE spec = '000202'

go

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество обучаемых'

FROM arm

JOIN vuz ON vuz.cod = vuz_k

WHERE spec = '000202'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

go

SELECT '0203' AS ' Специальность', COUNT(*) AS 'Всего'

FROM arm

WHERE spec = '000203'

go

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество обучаемых'

FROM arm

JOIN vuz ON vuz.cod = vuz_k

WHERE spec = '000203'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

go

SELECT '0205' AS ' Специальность', COUNT(*) AS 'Всего'

FROM arm

WHERE spec = '000205'

go

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество обучаемых'

FROM arm

JOIN vuz ON vuz.cod = vuz_k

WHERE spec = '000205'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

go

SELECT '0206' AS ' Специальность', COUNT(*) AS 'Всего'

FROM arm

WHERE spec = '000206'

go

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество обучаемых'

FROM arm

JOIN vuz ON vuz.cod = vuz_k

WHERE spec = '000206'

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

Вариант 2 (с помощью хранимой процедуры)

CREATE PROCEDURE lab5_p3 @num VARCHAR(6) AS

BEGIN

PRINT 'Специальность ' + @num

SELECT COUNT(*) AS 'Всего'

FROM arm

WHERE spec = @num

SELECT uch_zavedenie AS 'Учебное заведение', COUNT(*) AS 'Количество обучаемых'

FROM arm

JOIN vuz ON vuz.cod = vuz_k

WHERE spec = @num

GROUP BY uch_zavedenie

ORDER BY uch_zavedenie

END

SELECT 'Статистика по специальностям 0202, 0203, 0205 и 0206'

EXEC lab5_p3 '000202'

EXEC lab5_p3 '000203'

EXEC lab5_p3 '000205'

EXEC lab5_p3 '000206'

Результаты:

Вариант 1 (в диалоговом SQL)

Вариант 2 (с помощью хранимой процедуры)