Формирование базы данных «Врач», «Пациент», страница 4

Рис.19 Доля видов лечения меньше по стоимости 2500

9)  По заданной дате (выбор) определить всех больных, которые в данный день (выбор) принимают лечение, аналогично – по заданному (выбор) времени посещения.

Для даты:

SET DATE BRITISH

SELECT timetable.дата, patient.фамилия, patient.имя, patient.отчество, patient.карточка FROM patient;

INNER JOIN timetable ON timetable.id_patient = patient.id_patient;

WHERE timetable.дата = thisform.Text3.value

Для времени:

SELECT timetable.время, patient.фамилия, patient.имя, patient.отчество, patient.карточка FROM patient;

INNER JOIN timetable ON timetable.id_patient = patient.id_patient;

WHERE timetable.время = thisform.Text4.value

Рис.20 Больные посещавшие больницу 11.09.07

10) Найти долю работ с наименьшей продолжительностью лечения (меньше заданного N) от общего числа работ.

DIMENSION tmp3[1]

tmp3[1]=0

SELECT count(dwork.продолжит)*100/reccount() as Prc FROM dwork;

WHERE (dwork.продолжит < thisform.Text5.value);

INTO ARRAY tmp3

x = STR (tmp3)

MESSAGEBOX(x,0+64+0,"Доля работ с меньшей продолжительностью лечения от общего числа     ")

Рис.21 Доля работ с продолжительностью меньше, чем 30

11) Для каждого вида лечения выдать список, отсортированный

§  в алфавитном порядке всех врачей;

§  по стоимости;

§  по продолжительности лечения.

do case

            case  thisform.Combo3.value == 'по фамилиям врачей'

            SELECT dwork.вид_работы, dwork.продолжит, dwork.стоимость, doctor.фамилия, doctor.имя, doctor.отчество FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            ORDER BY doctor.фамилия

            case  thisform.Combo3.value == 'по стоимости'

            SELECT dwork.вид_работы, dwork.продолжит, dwork.стоимость, doctor.фамилия, doctor.имя, doctor.отчество FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            ORDER BY dwork.стоимость

            case  thisform.Combo3.value == 'по продолжительности лечения'

            SELECT dwork.вид_работы, dwork.продолжит, dwork.стоимость, doctor.фамилия, doctor.имя, doctor.отчество FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            ORDER BY dwork.продолжит

endcase

Рис.22 Список видов работ, отсортированный по стоимости

12) Найти все заболевания (виды работ) со стоимостью свыше 500 р. (и любая другая сумма, т.е. ввод с клавиатуры).

SELECT dwork.вид_работы, dwork.продолжит, dwork.стоимость FROM dwork;

WHERE thisform.Text6.value < dwork.стоимость

Рис.23 Все заболевания со стоимостью свыше 2500 р.

13) Для каждого врача и в целом определить среднюю стоимость лечения, самый дорогой вид лечения, самый дешевый.

Для врача:

do case

            case  thisform.Combo4.value == 'наименьшая'

            SELECT dwork.вид_работы, dwork.продолжит, min(dwork.стоимость) FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            WHERE doctor.фамилия = thisform.Combo1.value

            case  thisform.Combo4.value == 'наибольшая'

            SELECT dwork.вид_работы, dwork.продолжит, max(dwork.стоимость) FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            WHERE doctor.фамилия = thisform.Combo1.value

            case  thisform.Combo4.value == 'средняя'

            SELECT avg(dwork.стоимость) FROM  dwork;

            INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;

            WHERE doctor.фамилия = thisform.Combo1.value

endcase

В целом:

do case

            case  thisform.Combo5.value == 'наименьшая'

            SELECT dwork.вид_работы, dwork.продолжит, min(dwork.стоимость) FROM  dwork

            case  thisform.Combo5.value == 'наибольшая'

            SELECT dwork.вид_работы, dwork.продолжит, max(dwork.стоимость) FROM  dwork