Sql 在窗口函数中为表添加别名?

Sql 在窗口函数中为表添加别名?,sql,data-science,data-analysis,presto,Sql,Data Science,Data Analysis,Presto,我试图在一个窗口函数中对一个表进行别名,但不确定我做错了什么,因为当我对它进行别名时,会出现无法解析列的错误 SELECT e.city, e.time, e.day, e.id, m.id FROM (SELECT *, rank() OVER (PARTITION BY e.id, e.bin

我试图在一个窗口函数中对一个表进行别名,但不确定我做错了什么,因为当我对它进行别名时,会出现无法解析列的错误

    SELECT e.city,
       e.time,
       e.day,
       e.id,
       m.id
FROM
  (SELECT *,
          rank() OVER (PARTITION BY e.id,
                                    e.bin
                       ORDER BY e.time ASC) rnk
   FROM table e
   JOIN table2 m 
   on m.id = e.id
   WHERE e.status = 'YES'
   AND e.day BETWEEN date '2019-05-06' and date '2019-05-08')
WHERE rnk = 1

您已经在最外层的
选择中使用了
e
别名。但是,该别名的作用域中没有任何内容。来自
的内部
不是那样“伸出”的(不过作用域是以另一种方式“伸出”)

因此:


您已经在最外层的
选择中使用了
e
别名。但是,该别名的作用域中没有任何内容。来自
的内部
不是那样“伸出”的(不过作用域是以另一种方式“伸出”)

因此:


您也必须将子查询别名为
e
此处。但是子查询中的所有列名不是都用e别名吗?您也必须将子查询别名为
e
此处。但是子查询中的所有列名不是都用e别名吗?谢谢!快速问题:如果我有一个表想要加入,并且有别名,我是否只需要在子查询末尾显示的e旁边添加别名@戈登Linoff@chris90 . . . 你可以在……上加入ot。谢谢!快速问题:如果我有一个表想要加入,并且有别名,我是否只需要在子查询末尾显示的e旁边添加别名@戈登Linoff@chris90 . . . 你可以在……上加入ot
SELECT e.city, e.time, e.day, e.id
FROM (SELECT e.*,
             rank() OVER (PARTITION BY e.id, e.bin ORDER BY e.time ASC) as rnk
      FROM table e
      WHERE e.status = 'YES' AND
            e.day BETWEEN date '2019-05-06' and date '2019-05-08'
     ) e
-------^ here
WHERE rnk = 1