Существует таблица "лечение", которая содержит столбцы "staff_no", "patient_id", "start_date", "reason". Теперь я должен выбрать запрос, чтобы получить количество отдельных пациентов, проходящих каждый тип лечения (т.е. причину лечения) в базе данных, упорядоченный по алфавиту по причине лечения, но только для того, чтобы перечислить процедуры, которые имеют как минимум 2 пациенты проходят их. Это то, что я wrote-
SELECT COUNT (DISTINCT patient_id) CountNumber, reason FROM 'treatment' GROUP
BY reason ORDER BY reason;
но я получаю # 1064error.
Возможно, что-то вроде этого, exists
подзапрос, выберет все причины, которые содержат более двух строк в группе, из которых select distinct
будет составлять список уникальных reasons
а patient_id
и внешний выбор будут отображать причины, отсортированные по количеству пациентов по этой причине
SELECT 'reason', COUNT(*) FROM
(
SELECT DISTINCT 'patient_id', 'reason' FROM 'treatment'
WHERE EXISTS (
SELECT 'reason' FROM 'treatment' t2
WHERE 'treatment'.'reason' = 't2'.'reason'
GROUP BY 'reason'
HAVING COUNT(*)>=2
)
) t
GROUP BY reason ORDER BY 'reason'
HAVING
- это своеобразное условие, но для совокупных функций, таких как COUNT, AVG и т.д.