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

Московский Энергетический Институт

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №5

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

Шутова Е.С.

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

2010

Задание 8

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

ALTER PROCEDURE GetCategoryOfStudingByYearOfEnterance

(

@Year CHAR(2)

)

AS

BEGIN

SELECT COUNT(nomer) AS 'Количество учащихся поступивших в заданном году'

FROM bel b

WHERE

b.gp=@Year

SELECT

ko.kat_obucheniya AS 'Категория'

,COUNT(b.nomer) AS 'Количество учащихся в данной категории'

FROM bel b

INNER JOIN kat_obuch ko ON (ko.cod=b.kat_obuch_k)

WHERE

b.gp=@Year

GROUP BY

ko.kat_obucheniya

END

GO

Задание 9

Выдать статистику по вашему государству по следующим специаль­ностям: 0401 , 0402, 0403 и 0405 (общее число по каждой специально­сти), а также количества мужчин и женщин по каждой из этих специаль­ностей. Отчет должен начинаться с соответствующего заголовка. Далее таблица из четырех строчек, где каждая строчка включает шифр специ­альности и 3 цифры: всего, количество мужчин и количество женщин.

CREATE PROCEDURE [dbo].[GetSpecialityStatsByGender]

AS

BEGIN

SELECT

TotalTable.spec AS 'Специальность'

, Total AS 'Общее количесвто'

, Woman AS 'Количество женщин'

, Man AS 'Количество мужчин'

FROM

(

SELECT spec , COUNT(spec) AS Total

FROM bel

WHERE nomer IN

(

SELECT nomer

FROM bel

WHERE spec IN ('000401' ,'000402' ,'000403' ,'000405')

)

GROUP BY spec

) AS TotalTable

INNER JOIN

(

SELECT spec , COUNT(spec) AS Man

FROM bel

WHERE nomer IN

(

SELECT nomer

FROM bel

WHERE spec IN ('000401' ,'000402' ,'000403' ,'000405')

AND pol = 'М'

)

GROUP BY spec

) AS ManTable ON (ManTable.spec = TotalTable.spec)

INNER JOIN

(

SELECT spec , COUNT(spec) AS Woman

FROM bel

WHERE

nomer IN

(

SELECT nomer

FROM bel

WHERE spec IN ('000401' ,'000402' ,'000403' ,'000405')

AND pol = 'Ж'

)

GROUP BY spec

) AS WomanTable ON (WomanTable.spec = TotalTable.spec)

END

Задание 10

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

ALTER PROCEDURE GetmaritalStatusStats

(

@Year1 CHAR(2)

,@Year2 CHAR(2)

)

AS

BEGIN

SELECT @Year1 AS 'Год окончаения'

,COUNT(nomer) AS 'Количество учащихся'

FROM bel b

WHERE

b.gok=@Year1

SELECT

f.family_status AS 'Семейное положение'

,COUNT(b.nomer) AS 'Количество учащихся'

FROM bel b

INNER JOIN family f ON (f.cod=b.sem_polog_k)

WHERE

b.gok=@Year1

GROUP BY

f.family_status

SELECT @Year2 AS 'Год окончаения'

,COUNT(nomer) AS 'Количество учащихся'

FROM bel b

WHERE

b.gok=@Year2

SELECT

f.family_status AS 'Семейное положение'

,COUNT(b.nomer) AS 'Количество учащихся'

FROM bel b

INNER JOIN family f ON (f.cod=b.sem_polog_k)

WHERE

b.gok=@Year2

GROUP BY

f.family_status

END

GO

Задание 11

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

CREATE PROCEDURE [dbo].[GetLocationStatsForStudents]

AS

BEGIN

SELECT COUNT(*) AS 'Общее количество студентов'

FROM bel b

INNER JOIN kat_obuch ko ON (ko.cod=b.kat_obuch_k)

WHERE

ko.kat_obucheniya like 'СТУДЕНТ%'

SELECT

vg.nazvanie_goroda AS 'Город'

,COUNT(*) AS 'Количество студентов'

FROM bel b

INNER JOIN kat_obuch ko ON (ko.cod=b.kat_obuch_k)

INNER JOIN vuz_gorod vg ON (vg.cod_vuza=b.vuz_k)

WHERE

ko.kat_obucheniya like 'СТУДЕНТ%'

GROUP BY

vg.nazvanie_goroda

END

Задание 12

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

ALTER PROCEDURE [dbo].[GetLocationStatsForStudents]

(

@Year CHAR(2)

)

AS

BEGIN

SELECT COUNT(nomer) AS 'Общее количество учащихся'

FROM bel

SELECT

TotalTable.nazvanie_vuza AS 'ВУЗ'

, Total AS 'Общее количество'

, SelectedYear AS 'Закончившие в указанном году'

FROM

(

SELECT vg.nazvanie_vuza , COUNT(*) AS Total

FROM bel b

INNER JOIN vuz_gorod vg ON(vg.cod_vuza=b.vuz_k)

GROUP BY vg.nazvanie_vuza

) AS TotalTable

INNER JOIN

(

SELECT vg.nazvanie_vuza , COUNT(*) AS SelectedYear

FROM bel

INNER JOIN vuz_gorod vg ON(vg.cod_vuza=bel.vuz_k)

WHERE

bel.gok=@Year

GROUP BY vg.nazvanie_vuza

) AS SelectedYearTable

ON (SelectedYearTable.nazvanie_vuza = TotalTable.nazvanie_vuza)

END

Задание 13

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

ALTER PROCEDURE [dbo].[GetStudyCategoryStats]

AS

BEGIN

SELECT COUNT(*) AS 'Общее количество'

FROM bel b

INNER JOIN kat_obuch ko ON (ko.cod=b.kat_obuch_k)

WHERE NOT (ko.kat_obucheniya LIKE '%ЗАОЧНИК%')

SELECT

ko.kat_obucheniya AS 'Категория'

,COUNT(*) AS 'Количество учащихся'

FROM bel b

INNER JOIN kat_obuch ko ON (ko.cod=b.kat_obuch_k)

WHERE NOT (ko.kat_obucheniya LIKE '%ЗАОЧНИК%')

GROUP BY ko.kat_obucheniya

END

Задание 14

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

CREATE PROCEDURE [dbo].[GetStatsOFSpeciality456group]

AS

BEGIN

SELECT COUNT(nomer) AS 'Общее количество учащихся'

FROM bel b

WHERE b.spec BETWEEN 000401 AND 000699

SELECT b.spec

,COUNT(nomer)AS 'Количество учащихся'

FROM bel b

WHERE b.spec BETWEEN 000401 AND 000699

GROUP BY b.spec

END

Задание 15

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

CREATE PROCEDURE [dbo].[GetStatsVuzOfCapital]

AS

BEGIN

SELECT COUNT(nomer) AS 'Общее количество учащихся столицы'

FROM bel b

INNER JOIN vuz_gorod ON (vuz_gorod.cod_vuza=b.vuz_k)

WHERE vuz_gorod.nazvanie_goroda LIKE 'МИНСК'

SELECT vg.nazvanie_vuza

,COUNT(nomer)AS 'Количество учащихся'

FROM bel b

INNER JOIN vuz_gorod vg ON (vg.cod_vuza=b.vuz_k)

WHERE vg.nazvanie_goroda LIKE 'МИНСК'

GROUP BY vg.nazvanie_vuza

END