Медиана с Postgres 9.4 - Почему мой код не работает?
SELECT
(users.created_at::timestamp - invitations.created_at::timestamp) as elapsed,
percentile_disc(0.50)
WITHIN GROUP (ORDER BY elapsed) as median
FROM invitations
join users on users.id = invitations.user_id
Попытка выяснить среднее время ожидания между созданием приглашения и его принятием пользователем. Этот код генерирует ошибку:
ERROR: column "elapsed" does not exist.
Как я могу это починить?
1 ответ
Решение
Вы не можете использовать псевдоним на том же уровне, где вы его определяете. Вам нужно обернуть это в производную таблицу:
select elapsed,
percentile_disc(0.50) WITHIN GROUP (ORDER BY elapsed) as median
from (
SELECT users.created_at::timestamp - invitations.created_at::timestamp as elapsed,
FROM invitations
join users on users.id = invitations.user_id
) t;