AnalysisException: подзапросы не поддерживаются в списке выбора - PullRequest
0 голосов
/ 22 апреля 2020

Я получаю этот код ошибки, показанный в заголовке при использовании этого следующего запроса. Я пытаюсь запросить две таблицы, чтобы найти общее количество пациентов с проблемами слуха и общее количество пациентов с проблемами слуха, которые прошли какое-то сканирование (MR, S C, CT).

SELECT (
        SELECT COUNT(*)
        FROM hearing_evaluation 
        where severity_of_hearing_loss <> 'Normal'
        AND severity_of_hearing_loss <> 'insufficient data'
    ) AS patients_with_hearing_loss
    , AVG(number_of_scans) AS avg_number_of_scans
FROM (
    SELECT patient_id, COUNT(*) AS number_of_scans
    from imaging
    where patient_id IN (
        SELECT patient_id
        from hearing_evaluation
        where severity_of_hearing_loss <> 'Normal'
        and severity_of_hearing_loss <> 'insufficient data'
    )
    AND modality IN ('CT','MR','SC') 
    GROUP BY patient_id
) AS scans

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 23 апреля 2020

Я пытался, пожалуйста, обратитесь к ниже SQL - это будет работать в импале. Единственная проблема, которую я вижу, состоит в том, что если для слуховой оценки есть несколько идентификаторов пациентов для данного идентификатора пациента, вам необходимо дублировать данные.
Возможен случай, когда идентификатор пациента не существует в таблице изображений - в таком случае вам необходимо применить RIGHT JOIN.

SELECT COUNT(patient_id) AS patients_with_hearing_loss , AVG(rs.number_of_scans) AS avg_number_of_scans FROM ( SELECT i.patient_id patient_id, COUNT(*) AS number_of_scans from imaging i ,hearing_evaluation h where i. patient_id = h.patient_id and h.severity_of_hearing_loss <> 'Normal' and h.severity_of_hearing_loss <> 'insufficient data' AND modality IN ('CT','MR','SC') GROUP BY i.patient_id ) rs

...