close

Вход

Забыли?

вход по аккаунту

?

ПротоколБД5

код для вставкиСкачать
Министерство образования и науки Украины
Одесский национальный политехнический университет
Институт компьютерных систем
Кафедра компьютеризированных систем управления
Лабораторная работа №5
по курсу "Программное обеспечение современных ЭВМ"
Решение прикладных задач обработки статистических данных
Выполнила: ст. гр. АТ-082
Полищук Т.
Проверил: Андриевский Г.Г.
Коваленко А.
Одесса 2011
Цель работы.
Применение инструкций языка структурированных запросов SQL для сбора и обработки медико-статистической информации по заболеваемости с временной утратой трудоспособности (ВУТ) в соответствии с формой №23.
Ход работы.
Структура таблицы "Заболеваемость" (T1) состоит из 6-ти полей. Здесь идентификаторы помечают: 1. Nstr - номер строки отчета (форма N23), класса (підкласу) болезни;2. Abssl - число случаев заболеваний со временной потерей работоспособности;3. Otnsl- показатель случаев неработоспособности на 100 работающих;4. Absdn - число дней неработоспособности; 5. Otndn - показатель дней неработоспособности на 100 работающих;6. Sred - средняя длительность случая неработоспособности. Введение данных осуществляется в поля Abssl и Absdn. Поля Оtnsl, Оtndn и Sred служат для хранения результатов расчета основных показателей заболеваемости, которые находятся по следующим формулам:
1.Показатель случаев неработоспособности на 100 работающих есть отношение: Число случаев неработоспособности * 100 /Середня численность работающих
2. Показатель дней неработоспособности на 100 работающих есть отношение: Число дней неработоспособности * 100 /Средняя численность работающих
3. Средняя длительность случаев неработоспособности есть отношение: Число дней неработоспособности /Число случаев неработоспособности
1. Создадим таблицу T1 с помощью SQL-запроса: CREATE TABLE T1 (Nstr float PRIMARY KEY, Abssl int, Otnsl float, Absdn int, Otndn float, Sredn float)
2. Добавим в таблицу T1 записи (всего записей - 8) со значениями поля Nstr: 1.0, 1.1, 1.2, 2.0, 2.1, 2.2, 2.3 (шифры заболеваний) и 16.0 (Всего).
3. 3. Выполним вычисления:
3.1. Запишем в таблицу T1 значение полей abssl и absdn, подытоживая записи согласно условиям, заданным по полю Nstr :
[1.0]=[1.1]+ [1.2]
SELECT 1 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr>1) AND (Nstr<2);
DELETE *
FROM T1
WHERE Nstr=1;
INSERT INTO T1 ( Nstr, Abssl, Absdn )
SELECT rab.Nstr, rab.SumAbssl, rab.SumAbsdn
FROM rab;
[2.0]=[2.1]+ [2.2]+[2.3]
SELECT 2 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr>2) AND (Nstr<3);
DELETE *
FROM T1
WHERE Nstr=2;
INSERT INTO T1 ( Nstr, Abssl, Absdn )
SELECT rab.Nstr, rab.SumAbssl, rab.SumAbsdn
FROM rab;
Значение соответствующих полей для строк с номерами 1.1, 1.2 и 2.1, 2.2, 2.3 вводим с клавиатуры.
3.2. Запишем в таблицу T1 значение полей abssl и absdn, подытоживая записи согласно условию, заданному по полю Nstr:
[16.0]=[1.0]+[2.0]
SELECT 16 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr=1) OR (Nstr=2);
DELETE *
FROM T1
WHERE Nstr=16;
INSERT INTO T1 ( Nstr, Abssl, Absdn )
SELECT rab.Nstr, rab.SumAbssl, rab.SumAbsdn
FROM rab;
4. Выполним вычисления:
ОтноситСлуч=Случаев/ КолРаботающих;
ОтноситДней=Дней/ КолРаботающих;
СреднДней=Дней/КолСлучаев
Приобретенные значения запишем в соответствующие поля таблицы Т1. UPDATE T1 SET Otnsl = Abssl/500;
UPDATE T1 SET Otndn = Absdn/500;
UPDATE T1 SET Sredn = Absdn/Abssl;
Будем считать, что мы приняли среднее количество работников за 500. 5. Выполним контроль и диагностику возможных ошибок в данных таблицы T1: необходимо чтобы значение полей abssl и absdn в строке 1.0 были не меньше сумм соответствующих полей для строк с номерами 1.1 и 1.2, а также аналогичные требования имеют место для строк с номерами 2.0 и 2.1, 2.2, 2.3, что условно можно записать в виде
[1.0]>=[1.1]+ [1.2]
CREATE TABLE TE (Nstr float, s1 float, s2 float, s3 float, s4 float, Err logical);
SELECT 1 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr>1) AND (Nstr<2);
INSERT INTO TE ( Nstr, s1, s2, s3, s4 )
SELECT T1.Nstr, rab.SumAbssl, rab.SumAbsdn, T1.Abssl, T1.Absdn
FROM rab, T1
WHERE rab.Nstr=T1.Nstr;
[2.0]>=[2.1]+ [2.2]+[2.3]
SELECT 2 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr>2) AND (Nstr<3);
INSERT INTO TE ( Nstr, s1, s2, s3, s4 )
SELECT T1.Nstr, rab.SumAbssl, rab.SumAbsdn, T1.Abssl, T1.Absdn
FROM rab, T1
WHERE rab.Nstr=T1.Nstr;
Кроме того необходимо, чтобы выполнялось строгое равенство:
[16.0]=[1.0]+[2.0]
SELECT 16 AS Nstr, SUM(Abssl) AS SumAbssl, SUM(Absdn) AS SumAbsdn INTO rab
FROM T1
WHERE (Nstr=1) OR (Nstr=2);
INSERT INTO TE ( Nstr, s1, s2, s3, s4 )
SELECT T1.Nstr, rab.SumAbssl, rab.SumAbsdn, T1.Abssl, T1.Absdn
FROM rab, T1
WHERE rab.Nstr=T1.Nstr;
Полученные результаты контроля записываем в поле Err (логического типа, ошибки маркируются значением FALSE) во вспомогательной таблице TE, что состоит из полей Nstr s1, s2, Err (в полях s1 и s2 содержатся суммарные значения соответственно по полям abssl и absdn подстрок для строк 1.0 и 2.0, а также суммарные значения строк 1.0 и 2.0 таблицы T1).
UPDATE TE SET Err = (S3>=S1) AND (S4>=S2);
UPDATE TE SET Err = (S3=S1) AND (S4=S2)
WHERE Nstr=16;
6. Получим сведенную таблицу T0 со структурой аналогичной T1, подытоживая поэлементно данные из таблиц Т1, Т2, Т3, Т4, Т5 одинаковой структуры, которые содержат данные по заболеваемости для 5-ти разных предприятий. SELECT T1.Nstr, T1.Abssl+T2.Abssl+T3.Abssl+T4.Abssl+T5.Abssl AS Abssl, T1.Otnsl+T2.Otnsl+T3.Otnsl+T4.Otnsl+T5.Otnsl AS Otnsl, T1.Absdn+T2.Absdn+T3.Absdn+T4.Absdn+T5.Absdn AS Absdn, T1.Otndn+T2.Otndn+T3.Otndn+T4.Otndn+T5.Otndn AS Otndn, T1.Sredn+T2.Sredn+T3.Sredn+T4.Sredn+T5.Sredn AS Sredn INTO T0
FROM (((T1 INNER JOIN T2 ON T1.Nstr=T2.Nstr) INNER JOIN T3 ON T3.Nstr=T1.Nstr) INNER JOIN T4 ON T4.Nstr=T1.Nstr) INNER JOIN T5 ON T5.Nstr=T1.Nstr;
7. Создадим таблицу TR с результатами сравнительного отчета, что содержит данные из сведенных таблиц текущего и в прошлом году, а также вычисленные значения приростов, которые записать в поля D_sl, D_dn, D_sr таблицы TR.
SELECT T0.Nstr, T0LastYear.Abssl AS Abssl0, T0.Abssl AS Abssl1, T0LastYear.Otnsl AS Otnsl0, T0.Otnsl AS Otnsl1, T0LastYear.Absdn AS Absdn0, T0.Absdn AS Absdn1, T0LastYear.Otndn AS Otndn0, T0.Otnsl AS Otndn1, T0LastYear.Sredn AS Sredn0, T0.Sredn AS Sredn1, 0 AS D_sl, 0 AS D_dn, 0 AS D_sr INTO TR
FROM T0 INNER JOIN T0LastYear ON T0.Nstr=T0LastYear.Nstr;
UPDATE TR SET D_sl = Abssl0-Abssl1;
UPDATE TR SET D_dn = Absdn0-Absdn1;
UPDATE TR SET D_sr = Sredn0-Sredn1;
Выводы.
В данной работе я изучила и освоила основы употребления инструкций языка структурированных запросов SQL для сбора и обработки медико-статистической информации по заболеваемости с временной потерей работоспособности (ТВП) в соответствии с формой №23.
Автор
Phobi
Phobi13   документов Отправить письмо
Документ
Категория
Без категории
Просмотров
71
Размер файла
21 Кб
Теги
протоколбд
1/--страниц
Пожаловаться на содержимое документа