Я пытаюсь вычислить процентили, используя функцию percentile_cont() в PostgreSQL, используя общие табличные выражения. Цель состоит в том, чтобы найти первые 1% счетов в отношении их балансов (здесь называется сумма). Моя логика, чтобы найти 99th процентиль, которая будет возвращать те, чьи счета сальдо больше, чем 99% от своих сверстников (и, таким образом, находя 1 percenters)Невозможно получить Percentile_Cont() для работы в Postgresql
Вот мой запрос
--ranking subquery works fine
with ranking as(
select a.lname,sum(c.amount) as networth from customer a
inner join
account b on a.customerid=b.customerid
inner join
transaction c on b.accountid=c.accountid
group by a.lname order by sum(c.amount)
)
select lname, networth, percentile_cont(0.99) within group
order by networth over (partition by lname) from ranking ;
Я держать получение следующая ошибка.
ERROR: syntax error at or near "order"
LINE 2: ...ame, networth, percentile_cont(0.99) within group order by n..
Я думаю, что, возможно, я забыл о закрывающей скобе и т. Д., Но я не могу понять, где. Я знаю, что это может быть что-то с ключевым словом order
, но я не уверен, что делать. Не могли бы вы помочь мне исправить эту ошибку?
. , Ваш исходный запрос не имеет смысла. Вы группируете 'lname', а затем используете это для раздела для' networth'. Существует только одна строка, поэтому 99-й процентиль не имеет смысла. Возможно, вы захотите задать другой вопрос с образцами данных и желаемыми результатами. –