Елена Г.
72 повідомлення
#13 років тому
Меня попросили составить запрос на SQL.
-----------------------------------------------------------------------------------
Таблица посещений Recept больниц пациентами

id_hosp - уник. числ идент больницы
id_rec - уник. числ идент посещения
period - период в формате YYYYMM например 201001 (фнв 2010)
id_pacient - уник. числ идент пациента

Таблица Pacient
id - уник. идент пациента
name - фио

Таблица Hosp
id - уник. идент больницы
name - Название

Составить запрос в котором посчитать кол-во посещений для каждой лпу
в год , количество уникальных пациентов в год для каждой лпу, т.е.
в резулт. таб-це должны быть колонки:

- ЛПУ
- КОл-во посещений в год
- КОл-во уникальных Пациентов в год
--------------------------------------------------------------------------------------

Т.к. здесь достаточно программистов, то прошу вашей помощи. Меня интересует реально ли составить такой запрос только на SQL. Решение не обязательно. Меня интересует реально ли? Я уже с этим себе весь мозг вынесла. По моему это не реально. Но может все-таки реально?
Артур З.
65 повідомлень
#13 років тому
SELECT Recept.id_hosp
, Hosp.name
, count(Recept.id_rec)
, count(DISTINCT Recept.id_pacient)
FROM
Hosp, Recept
WHERE
Recept.id_hosp = Hosp.id_hosp
AND
Recept.period BETWEEN "2010-01-1" AND "2010-12-31"
GROUP BY
Recept.id_hosp;

типа того, только нужно уточнить какая бд и какой тип данных у period
если в каком-то лпу нет ни одного посещения, то и в полученном ответе его не будет
Елена Г.
72 повідомлення
#13 років тому
CУБД MS SQL. Не работает запрос.

Ошибка6 Столбец "Hosp.name" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY

Но по моему в такой реализации не возможно найти сумму посещений по каждому ЛПУ. Такой запрос я тоже пыталась создать. И ошибка была та же.
Елена Г.
72 повідомлення
#13 років тому
Большое спасибо, дошло. Немного подкорректировала запрос и все прошло. А ведь думала об этом запросе. Видимо еще не до конца все нюансы поняла.