Выберите дополнительный столбец строки, сопоставленный с процентом_диска - PullRequest
0 голосов
/ 23 октября 2019

Скажем, я хочу выбрать значение 50-го процентиля таблицы в Postgres, которое отлично работает следующим образом:

SELECT  percentile_disc(0.5) within group (order by value) FROM foo;

Но теперь я хочу узнать значение другого столбца,скажем, created_at для той же строки, которая была сопоставлена:

SELECT created_at, percentile_disc(0.5) within group (order by value) FROM foo;

Но возникает ошибка: column "foo.created_at" must appear in the GROUP BY clause or be used in an aggregate function.

Теоретически, Постгрес должен знать, о каком created_at я говорю, поскольку percentile_disc относится не более чем к одной строке. Но я не вижу способа ссылаться на значение в запросе выбора. Возможно ли это?

1 Ответ

0 голосов
/ 24 октября 2019

Вы не можете использовать агрегатную функцию для этого напрямую, но, возможно, в суб-выборе, подобном этому:

SELECT f.created, f.value
FROM foo f
WHERE value = (SELECT percentile_disc(0.5) WITHIN GROUP (ORDER BY f2.value) FROM foo f2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...