Это таблица, в которой я хочу указать проценты.
+------+--------+-------------+--------------+
| H_ID | H_NAME | DOCTOR_STAT | PATIENT_STAT |
+------+--------+-------------+--------------+
| 1 | NAME 1 | 0 | 0|
| 2 | NAME 2 | 0 | 0|
| 3 | NAME 3 | 0 | 0|
| 4 | NAME 4 | 0 | 0|
| 5 | NAME 5 | 0 | 0|
+------+--------+-------------+--------------+
Это код, который я написал. Внутренний sql -запрос работает нормально (он правильно печатает процент от указанного идентификатора больницы), но возвращает несколько строк, поэтому обновление не работает.
UPDATE HOSPITAL_STATISTICS
SET DOCTOR_STAT=(SELECT ROUND(100*COUNT(DOCTOR.WORK_HOSPITAL)/(SELECT COUNT(DOCTOR.ID)FROM DOCTOR),2)
FROM DOCTOR,HOSPITAL
WHERE HOSPITAL.HOSPITAL_ID=DOCTOR.WORK_HOSPITAL
GROUP BY HOSPITAL.HOSPITAL_ID)
Я знаю, что это возвращает несколько строк, но я не знаю как это решить. Я должен посчитать процент от того, сколько врачей работает в каждой больнице. Если вам нужна дополнительная таблица данных для помощи, пожалуйста, скажите мне:)
РЕДАКТИРОВАТЬ: у меня есть вторая таблица с именем Patient_Visit и третья больница
Patient_Visit
[Visit_ID,Patient_ID,Hospital_ID]
Hospital
[Hospital_ID,Hospital_Name]
, и я пытаюсь сделать то же самое с этим кодом
UPDATE HOSPITAL_STATISTICS
SET PATIENT_STAT=(SELECT ROUND(100* COUNT (*) / (SELECT COUNT(*) FROM PATIENT_VISIT),2)
FROM PATIENT_VISIT,HOSPITAL
WHERE PATIENT_VISIT.HOSPITAL_ID=HOSPITAL.HOSPITAL_ID AND HOSPITAL_STATISTICS.H_ID=PATIENT_VISIT.HOSPITAL_ID
GROUP BY HOSPITAL_VISIT.HOSPITAL_ID)
, который дает мне эту ошибку: ORA-01407: невозможно обновить ("HOSPITAL_STATISTICS". "PATIENT_STAT") до NULL. Есть идеи?