Я получаю столбец не найден из внутреннего запроса, несмотря на использование псевдонима - PullRequest
1 голос
/ 13 июня 2019

Я новичок в SQL и хочу в основном получить квартильный график из моего запроса.Однако у меня возникли некоторые проблемы с моим запросом

Я дал псевдонимы и пытаюсь вычислить квартили.

Вот запрос

SELECT series,
       MIN(value) AS minimum,
       AVG(q1) AS q1,
       AVG(median) AS median,
       AVG(q3) AS q3,
       MAX(value) AS maximum
FROM 
    (SELECT series,
            PERCENTILE_CONT(0.25) WITHIN GROUP 
                 (ORDER BY value) OVER (PARTITION BY series) AS q1,
            MEDIAN(value) OVER (PARTITION BY series) AS median,
            PERCENTILE_CONT(0.75) WITHIN GROUP 
                 (ORDER BY value) OVER (PARTITION BY series) AS q3
     FROM  
         (SELECT type as series, (a.duration)/(60000) as value
          FROM test.pattern a
          JOIN test.metadata b ON a.id = b.id) AS quartile) AS raw_data
GROUP BY 1

Однако япродолжайте получать

column "value" does not exist in raw_data

В имени моего столбца нет заглавных букв, и это меня сейчас смущает.

Буду признателен за помощь

ОБНОВЛЕНИЕ: Спасибо Гордану, запрос работает.Однако для большого набора данных время выполнения очень медленное. Любые указания на то, как это можно улучшить, спасибо

1 Ответ

1 голос
/ 13 июня 2019

Вам также нужно выбрать его в подзапросе middle :

FROM (SELECT series, value,
---------------------^
             PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY value) OVER (PARTITION BY series) AS q1,
             MEDIAN(value) OVER (PARTITION BY series) AS median,
             PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY value) OVER (PARTITION BY series) AS q3
      FROM (SELECT type as series, (a.duration)/(60000) as value
                FROM test.pattern p JOIN
                     test.metadata m
                     ON p.id = m.id
          ) AS quartile
     ) AS raw_data
...