Я пытаюсь получить список наших пользователей из нашей базы данных вместе с количеством людей из той же когорты, что и они - что в данном случае определяется как принадлежащее к одной медицинской школе в одно и то же время.
medical_school_id
хранится в таблице doctor_record
graduation_dt
также хранится в таблице doctor_record
.
Мне удалось выписать этот запрос с помощью подзапроса, который выполняетоператор выбора, подсчитывающий количество других для каждой строки, но это занимает вечность.Моя логика подсказывает мне, что сначала мне нужно выполнить простой запрос GROUP BY, а затем как-нибудь присоединиться к нему medical_school_id.
Группировка по запросу выглядит следующим образом
select count(ca.id) , cdr.medical_school_id, cdr.graduation_dt
from account ca
LEFT JOIN doctor cd on ca.id = cd.account_id
LEFT JOIN doctor_record cdr on cd.gmc_number = cdr.gmc_number
GROUP BY cdr.medical_school_id, cdr.graduation_dt
длинный запрос на выборку
select a.id, a.email , dr.medical_school_id,
(select count(ba.id) from account ba
LEFT JOIN doctor bd on ba.id = bd.account_id
LEFT JOIN doctor_record bdr on bd.gmc_number = bdr.gmc_number
WHERE bdr.medical_school_id = dr.medical_school_id AND bdr.graduation_dt = dr.graduation_dt) AS med_count,
from account a
LEFT JOIN doctor d on a.id = d.account_id
LEFT JOIN doctor_record dr on d.gmc_number = dr.gmc_number
Если бы вы могли подтолкнуть меня в правильном направлении, это было бы удивительно