Задание 12
Выдать статистику по учебным заведениям вашего государства, включая цифры по выпуску 1994 года. Отчет должен начинаться с заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень названий учебных заведений с двумя цифрами (у каждого учебного заведения): 1) всего по учебному заведению (не равная нулю); 2) выпуск 1994 года.
Запросы:
Вариант 1 (в диалоговом SQL)
SELECT COUNT(*) AS 'Всего выпускников'
FROM arm
go
SELECT vuz.uch_zavedenie AS 'Учебное заведение', N AS 'Всего выпускников', N94 AS 'Среди них выпускников 1994 года'
FROM
(
SELECT vuz_k, COUNT(*) AS N94
FROM arm
WHERE gok = '94'
GROUP BY vuz_k
) AS TABLE1
JOIN
(
SELECT vuz_k, COUNT(*) AS N
FROM arm
GROUP BY vuz_k
) AS TABLE2
ON TABLE1.vuz_k = TABLE2.vuz_k
JOIN vuz
ON vuz.cod = TABLE1.vuz_k
Вариант 2 (с помощью хранимой процедуры)
CREATE PROCEDURE lab5_p12 @year VARCHAR(2) = '94' AS
BEGIN
SELECT COUNT(*) AS 'Всего выпускников'
FROM arm
SELECT uch_zavedenie AS 'Учебное заведение', N AS 'Всего выпускников', N94 AS 'Из них искомого года'
FROM
(
SELECT vuz_k, COUNT(*) AS N94
FROM arm
WHERE gok = @year
GROUP BY vuz_k
) AS TABLE1
JOIN
(
SELECT vuz_k, COUNT(*) AS N
FROM arm
GROUP BY vuz_k
) AS TABLE2
ON TABLE1.vuz_k = TABLE2.vuz_k
JOIN vuz
ON vuz.cod = TABLE1.vuz_k
END
Результаты:
Вариант 1 (в диалоговом SQL)
Вариант 2 (с помощью хранимой процедуры)
Задание 13
Выдать статистику по категориям обучения учащихся вашего государства, исключая студентов-заочников и аспирантов-заочников. Отчет должен начинаться с соответствующего заголовка и цифры - общего количества записей по запросу. Далее таблица, включающая перечень требуемых категорий обучения с цифрами, не равными нулю.
Запросы:
Вариант 1 (в диалоговом SQL)
SELECT COUNT(*) AS 'Всего учащихся на очной форме'
FROM arm
WHERE kat_obuch_k NOT IN(
SELECT cod
FROM kat_obuch
WHERE kat_obucheniya LIKE('СТУДЕНТ-З%') OR kat_obucheniya LIKE('АСПИРАНТ-З%')
)
go
SELECT kat_obuch.kat_obucheniya AS 'Категория обучения', COUNT(*) AS 'Количество'
FROM arm
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
WHERE kat_obucheniya NOT LIKE('СТУДЕНТ-З%') AND kat_obucheniya NOT LIKE('АСПИРАНТ-З%')
GROUP BY kat_obuch.kat_obucheniya
ORDER BY kat_obuch.kat_obucheniya
Вариант 2 (с помощью хранимой процедуры)
CREATE PROCEDURE lab5_p13 AS
BEGIN
SELECT COUNT(*) AS 'Всего учащихся на очной форме'
FROM arm
WHERE kat_obuch_k NOT IN(
SELECT cod
FROM kat_obuch
WHERE kat_obucheniya LIKE('СТУДЕНТ-З%') OR kat_obucheniya LIKE('АСПИРАНТ-З%')
)
SELECT kat_obuch.kat_obucheniya AS 'Категория обучения', COUNT(*) AS 'Количество'
FROM arm
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
WHERE kat_obucheniya NOT LIKE('СТУДЕНТ-З%') AND kat_obucheniya NOT LIKE('АСПИРАНТ-З%')
GROUP BY kat_obuch.kat_obucheniya
ORDER BY kat_obuch.kat_obucheniya
END
Результаты:
Вариант 1 (в диалоговом SQL)
Вариант 2 (с помощью хранимой процедуры)