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

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

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

Ковех Ольга

Рязанов Михаил

10-11-2010

Задание 8

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

SELECT 'всего обучается от 91 года' as 'exp', COUNT(*) [ammount]

FROM arm

WHERE gp like '%91'

GROUP BY gp

UNION all

SELECT kat_obuch_k, COUNT(kat_obuch_k)

FROM arm

WHERE gp like '91'

GROUP BY kat_obuch_k

Задание 9

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

Способ1:

SELECT a.spec as 'Specialization',

TotalAmm as 'Total Ammount',

ManAmm as 'Men Ammount',

WomanAmm as 'Women Ammount'

FROM

(

SELECT spec , COUNT(spec) as WomanAmm

FROM arm

WHERE nomer in

(

SELECT nomer

FROM arm

WHERE spec in (0401 ,0402 ,0403 ,0405) and pol = 'Æ')

GROUP BY spec

) as a

JOIN

(

SELECT spec , COUNT(spec) as ManAmm

FROM arm

WHERE nomer in

(

SELECT nomer

FROM arm

WHERE spec in (0401 ,0402 ,0403 ,0405) and pol = 'Ì'

)

GROUP BY spec

)as b on a.spec = b.spec

JOIN

(

SELECT spec , COUNT(spec) as TotalAmm

FROM arm

WHERE nomer in

(

SELECT nomer

FROM arm

WHERE spec in (0401 ,0402 ,0403 ,0405)

)

GROUP BY spec

) as q on q.spec = a.spec

Способ 2

select spec, COUNT (*) as [All],

sum (case when pol='М' then 1 else 0 end) as 'Man',

sum (case when pol='Ж' then 1 else 0 end) as 'Woman'

from arm

where spec in (0401 ,0402 ,0403 ,0405)

group by spec

Задание 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

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

ALTER PROCEDURE GetLocationStatsForStudents

AS

BEGIN

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

FROM arm 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 arm 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 года.

CREATE PROCEDURE ForStudents

(

@Year CHAR(2)

)

AS

BEGIN

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

FROM arm

SELECT

TotalTable.nazvanie_vuza AS 'ВУЗ'

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

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

FROM

(

SELECT vg.nazvanie_vuza , COUNT(*) AS Total

FROM arm 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 arm

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

WHERE

arm.gok=@Year

GROUP BY vg.nazvanie_vuza

) AS SelectedYearTable

ON (SelectedYearTable.nazvanie_vuza = TotalTable.nazvanie_vuza)

END

Задание 13

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

CREATE PROCEDURE CategoryStats

AS

BEGIN

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

FROM arm 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 arm 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) учащихся вашего государства. Отчет должен начинаться с соответствующего заголовка и цифры - обще­го количества записей по запросу. Далее таблица, включающая перечень требуемых шифров специальностей с цифрами, не равными нулю.

ALTER PROCEDURE groupii

AS

BEGIN

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

FROM arm b

WHERE b.spec BETWEEN 000401 AND 000699

SELECT b.spec

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

FROM arm b

WHERE b.spec BETWEEN 000401 AND 000699

GROUP BY b.spec

END

Задание 15

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

CREATE PROCEDURE OfCapital

AS

BEGIN

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

FROM arm 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 arm b

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

WHERE vg.nazvanie_goroda LIKE 'ЕРЕВАН'

GROUP BY vg.nazvanie_vuza

END

Соседние файлы в папке Ковех,Рязанов