Проектирование реляционной базы данных методом «Сущность – связь».Освоение метода «сущность – связь», страница 4

SELECT Illness.illnessName, Year([Objects]!ComingInDate) AS [Год обращения], Count(patient.PatientID) AS Муж, MonthName(Month([Objects]!ComingInDate)) AS [Название месяца]

FROM Illness INNER JOIN (patient INNER JOIN Objects ON patient.PatientID = Objects.PatientID) ON Illness.illnessID = Objects.ilnessID

GROUP BY Illness.illnessName, Year([Objects]!ComingInDate), MonthName(Month([Objects]!ComingInDate)), patient.Sex

HAVING (((Illness.illnessName)=[название болезни]) AND ((patient.Sex)="муж") AND ((Year([Objects]![ComingInDate]))=Year(Date())-1));

Запрос 2. Вывести статистику заболеваемости определенной болезнью по возрастным группам за прошедший год.

Для составления данного запроса составим четыре вспомогательных запроса: первые три будут выделять количество заболевших по каждой из трех выделенных возрастных групп (до 30, от 30 до 55, старше 55) четвертый запрос – запрос, объединяющий информацию, полученную из первых трех в единый запрос.

Вспомогательные запросы.

Запрос2(Молод)

SELECT Illness.illnessName AS [Название болезни], Count(patient.PatientID) AS Молодые, Sin(0) AS Средние, Sin(0) AS Старые, Year(Objects!ComingInDate) AS [Год обращения]

FROM patient INNER JOIN (Illness INNER JOIN Objects ON Illness.illnessID=Objects.ilnessID) ON patient.PatientID=Objects.PatientID

GROUP BY Illness.illnessName, Sin(0), Sin(0), Year(Objects!ComingInDate), Year(Date())-Year(patient!Birthdate)

HAVING (((Illness.illnessName)=[название болезни]) And ((Year(Date())-Year(patient!Birthdate))<30) And ((Year(Objects!ComingInDate))=Year(Date())-1));

Запрос2(Средн)

SELECT Illness.illnessName, Count(patient.PatientID) AS Средние, Sin(0) AS Старые, Sin(0) AS Молодые, Year([Objects]!ComingInDate) AS [Год обращения]

FROM patient INNER JOIN (Illness INNER JOIN Objects ON Illness.illnessID = [Objects].ilnessID) ON patient.PatientID = [Objects].PatientID

GROUP BY Illness.illnessName, Sin(0), Sin(0), Year([Objects]!ComingInDate), Year(Date())-Year(patient!Birthdate)

HAVING (((Illness.illnessName)=[название болезни]) AND ((Year(Date())-Year([patient]![Birthdate]))>=31 And (Year(Date())-Year([patient]![Birthdate]))<55) AND ((Year([Objects]![ComingInDate]))=Year(Date())-1));

Запрос2(Стар)

SELECT Illness.illnessName, Count(patient.PatientID) AS Старые, Sin(0) AS Средние, Sin(0) AS Молодые, Year(Objects!ComingInDate) AS [Год обращения]

FROM patient INNER JOIN (Illness INNER JOIN Objects ON Illness.illnessID=Objects.ilnessID) ON patient.PatientID=Objects.PatientID

GROUP BY Illness.illnessName, Sin(0), Sin(0), Year(Objects!ComingInDate), Year(Date())-Year(patient!Birthdate)

HAVING (((Illness.illnessName)=[название болезни]) And ((Year(Date())-Year(patient!Birthdate))>=55) And ((Year(Objects!ComingInDate))=Year(Date())-1));

Запрос2Un – объединяющий запрос.

select [Название болезни],[Молодые],[Средние] ,[Старые],[Год обращения]

from [Запрос2(Молод)]

union

select [illnessName],[Старые] ,[Средние],[Молодые],[Год обращения]

from [Запрос2(Средн)]

UNION select [illnessName],[Молодые],[Средние] ,[Старые],[Год обращения]

from [Запрос2(Стар)];

Запрос2 – итоговый запрос, выводящий требуемую статистику.

SELECT Запрос2Un.[Название болезни], Sum(Запрос2Un.Молодые) AS [Молодой возраст], Sum(Запрос2Un.Средние) AS [Средний возраст], Sum(Запрос2Un.Старые) AS [Пожилой возраст], Запрос2Un.[Год обращения]

FROM Запрос2Un

GROUP BY Запрос2Un.[Название болезни], Запрос2Un.[Год обращения];

Запрос3. Выявить самые распространенные заболевания за прошедший год, подсчитав для каждого из них количество заболевших.

SELECT Illness.illnessName, Count([Objects].ilnessID) AS [Количество обратившихся], Year([Objects]!ComingInDate) AS [Год обращения]

FROM patient INNER JOIN (Illness INNER JOIN Objects ON Illness.illnessID = [Objects].ilnessID) ON patient.PatientID = [Objects].PatientID

GROUP BY Illness.illnessName, Year([Objects]!ComingInDate)

HAVING (((Year([Objects]![ComingInDate]))=Year(Date())-1));

Запрос 4.  Определить загруженность врача-терапевта по месяцам, подсчитав количество обратившихся.