WHERE (doctor.фамилия == thisform.Combo1.value)
endcase
Рис.13 Заработок врача за неделю |
3) Определить, кто из врачей заработал больше 500 т.р. (ввод любой суммы с клавиатуры) за последний месяц.
SELECT doctor.фамилия, doctor.имя, doctor.отчество, doctor.зарплата FROM doctor;
WHERE (doctor.зарплата > thisform.Text1.value)
Рис.14 Врачи заработавшие больше 36 т.р. |
4) Выдать список десяти больных с видом лечения, чья стоимость максимальна.
SET SAFETY OFF
SELECT patient.фамилия, patient.имя, patient.отчество, patient.карточка, dwork.вид_работы, dwork.стоимость FROM patient;
INNER JOIN dwork ON dwork.id_work = patient.id_work;
ORDER BY dwork.стоимость DESC;
INTO DBF tmp1
goto 11
delete rest
pack
SELECT * FROM tmp1
Рис.15 Список десяти больных с видом лечения, чья стоимость максимальна |
5) Перечислить больных с максимальной продолжительностью лечения у заданного врача (выбор).
SELECT dwork.продолжит, patient.фамилия, patient.имя, patient.отчество, patient.карточка, dwork.вид_работы, dwork.стоимость FROM dwork;
INNER JOIN patient ON dwork.id_work = patient.id_work;
INNER JOIN doctor ON dwork.id_doctor = doctor.id_doctor;
WHERE (doctor.фамилия == thisform.Combo1.value) and dwork.продолжит = (SELECT (max(dwork.продолжит)) FROM dwork;
INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;
INNER JOIN patient ON patient.id_work = dwork.id_work;
WHERE (doctor.фамилия == thisform.Combo1.value))
Рис.16 Больной с максимальной продолжительностью лечения |
6) Определить больного, который посещал заданного врача (выбор) наибольшее число раз за месяц (для каждого врача и в целом для больницы).
Для врача:
SELECT count(*) as CNT_A FROM patient;
INNER JOIN dwork ON dwork.id_work = patient.id_work;
INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;
INNER JOIN timetable ON timetable.id_patient = patient.id_patient;
GROUP BY patient.Фамилия;
WHERE (doctor.фамилия == thisform.Combo1.value);
INTO CURSOR tmp
SELECT max(CNT_A) FROM tmp;
INTO ARRAY maxc
SELECT count(*) as "количество_посещений", patient.фамилия, patient.имя, patient.отчество, patient.карточка FROM patient;
INNER JOIN dwork ON dwork.id_work = patient.id_work;
INNER JOIN doctor ON doctor.id_doctor = dwork.id_doctor;
INNER JOIN timetable ON timetable.id_patient = patient.id_patient;
GROUP BY patient.фамилия;
WHERE (doctor.фамилия == thisform.Combo1.value);
HAVING количество_посещений = maxc
Для больницы:
SELECT count(*) as CNT_A FROM patient;
INNER JOIN dwork ON dwork.id_work = patient.id_work;
INNER JOIN timetable ON timetable.id_patient = patient.id_patient;
GROUP BY patient.Фамилия;
INTO CURSOR tmp
SELECT max(CNT_A) FROM tmp;
INTO ARRAY maxc
SELECT count(*) as "количество_посещений", patient.фамилия, patient.имя, patient.отчество, patient.карточка FROM patient;
INNER JOIN dwork ON dwork.id_work = patient.id_work;
INNER JOIN timetable ON timetable.id_patient = patient.id_patient;
GROUP BY patient.фамилия;
HAVING количество_посещений = maxc
Рис.17 Больной больше всего раз посещавший больницу |
7) Перечислить заработки за месяц каждого врача в порядке возрастания, в алфавитном порядке (для врачей).
SELECT doctor.фамилия, doctor.имя, doctor.отчество, doctor.зарплата FROM doctor;
ORDER BY doctor.зарплата, doctor.фамилия
Рис.18 Заработки за месяц каждого врача в порядке возрастания, в алфавитном порядке |
8) Найти долю дешевых по стоимости видов лечения (меньше заданного N) от общего числа.
DIMENSION tmp2[1]
tmp2[1]=0
SELECT count(dwork.стоимость)*100/reccount() as Prc FROM dwork;
WHERE (dwork.стоимость < thisform.Text2.value);
INTO ARRAY tmp2
x = STR (tmp2)
MESSAGEBOX(x,0+64+0,"Доля дешевых по стоимости видов лечения от общего числа ")
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.