У меня есть таблица с темами со столбцами Capture_group_id, subject_id, round_id и некоторыми другими столбцами. Я хочу написать оператор SELECT, который возвращает отдельные субъекты, не обращая внимания на round_id, но я также хочу знать, в скольких раундах участвовал субъект.
Я пришел к этим двум решениям (которые не возвращают результат в нужной форме)
ПЕРВЫЙ:
SELECT study_case.capture_group_id, proband.subject_id,Count(1) AS Count
FROM study_case
JOIN proband
ON study_case.proband_id = proband.proband_id
GROUP BY study_case.capture_group_id, proband.subject_id
это возвращает отдельные предметы с количеством участвующих раундов. Но я не могу добавить столбцы в оператор select, которые не включены в оператор group by.
Другой подход заключался в следующем:
SELECT DISTINCT ON (study_case.capture_group_id, proband.subject_id) study_case.capture_group_id, proband.subject_id, study_case.round_id, proband.gender, proband.birth_year, proband.birth_country
FROM study_case
JOIN proband
ON study_case.proband_id = proband.proband_id
ORDER BY study_case.capture_group_id, proband.subject_id, study_case.round_id
Как я могу создать отчет SQL, который показывает отдельные предметы, подсчитывает агрегированные предметы DISTINCT и включает все столбцы из второго оператора?