Используйте ROW_NUMBER()
, если ваша СУБД поддерживает это: это работает, ранжируя записи, увеличивая intime
в группах записей с одинаковым ham_id
, а затем фильтруя во внешнем запросе по верхней записи для группы:
SELECT hadm_id
FROM (
SELECT hadm_id, ROW_NUMBER() OVER(PARTITION BY hadm_id ORDER BY intime) rn
FROM `physionet-data.mimiciii_clinical`.icustays
WHERE first_careunit = 'CCU'
) x
WHERE rn = 1
Если СУБД не поддерживает оконные функции, такие как ROW_NUMBER()
, другой вариант заключается в использовании условия NOT EXISTS
с коррелированным подзапросом:
SELECT hadm_id
FROM `physionet-data.mimiciii_clinical`.icustays i
WHERE
first_careunit = 'CCU'
AND NOT EXISTS (
SELECT 1
FROM `physionet-data.mimiciii_clinical`.icustays i1
WHERE
i1.first_careunit = 'CCU'
AND i1.hadm_id = i.hadm_id
AND i1.intime < i.intime
)