sql - Postgres 9.4 的中位数 - 为什么我的代码不工作?

标签 sql postgresql column-alias

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.

如何修复?

最佳答案

您不能在定义别名的同一级别上使用别名。您需要将其包装在派生表中:

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;

关于sql - Postgres 9.4 的中位数 - 为什么我的代码不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36266045/

相关文章:

mysql - 如何在有约束的情况下查询数据库中每个用户在给定日期的最后一个条目?

ruby-on-rails - 设计用户的 rails pg db 迁移未定义方法 `database_authenticatable'

ruby-on-rails - 我们很抱歉,但有些不对劲。 - Heroku 托管

mysql - 无法在 WHERE 子句中使用 SELECT 子句的别名

scala - 重命名 Spark DataFrame 中的嵌套结构列

sql - 查询插入行号以对结果进行分页

sql - H2 SQL 日期比较

php - 数据库 |分面搜索

sql限制计数查询

ruby-on-rails - 在 Rails 中使用 Postgres UUID 时破坏了加入记录的创建、保存、更新和销毁