#mysql
#mysql
Вопрос:
Меня просят найти количество пациентов, умерших из-за кариеса.
В частности, я несколько смущен тем, как использовать COUNT()
вместе с SELECT
предложением.
Прием-Диагностика:
Adm_ID // Номер поступления (госпитализация)
Diag_ID //Идентификатор диагноза
Прием:
Adm_ID // Номер поступления (госпитализация)
Pat_ID //Идентификатор пациента
Date_Adm // Дата поступления
Date_Discharge //Дата выписки
Health_ID // Состояние здоровья пациента при выписке
Моя попытка:
Сначала из таблицы Прием-Диагностика я получил тех пациентов, которые попали в больницу из-за кариеса
SELECT *
FROM Adm_Diag
WHERE Diag_ID = 900 /*900 code for caries
Затем я нахожу идентификаторы приема, для которых состояние здоровья пациентов при выписке «Умерло»
SELECT *
FROM Admission
WHERE Health_ID = 23 /* 23: code for 'Die'
Затем я объединил эти две таблицы и нашел те идентификаторы приема, в которых пациент умер из-за кариеса
SELECT e1.Adm_ID, Diag_ID, Health_ID
FROM (SELECT *FROM Adm_diag WHERE diag_ID = 900) e2,
(SELECT *FROM admission WHERE Health_id=23) e1
WHERE e2.Adm_ID=e1.Adm_ID
Но у меня возникли проблемы с частью «подсчета». Я действительно не представляю, как использовать предложение count и select одновременно. Я пытался поместить все в count ( COUNT(SELECT e1.Adm_ID, Diag_ID, Health_ID...
), но это не работает.
Кстати, когда я создавал базу данных, я поместил, что один пациент умер из-за этого (:
Ответ №1:
Вы могли бы использовать count(*) с group by
SELECT e1.Adm_ID, e1.Diag_ID, e2.Health_ID, coun(*)
FROM Adm_diag as a
INNER JOIN admission on e1.Adm_ID = e.Adm_ID
WHERE e1.Diag_ID = 900
AND e2.Health_ID = 23
group by e1.Adm_ID, e1.Diag_ID
Ответ №2:
Можете ли вы попробовать :
select count(*)
from Adm_diag ad
inner join admission a
on ad.Adm_ID = a.Adm_ID
where ad.diag_ID = 900 and a.Health_id=23