为什么group by子句使用' month'别名和作品?我想过要选择'在' group by'之后执行子句。我是对的,在任何条款之前执行函数吗?
select date_trunc('month', starttime) as month, count(*)
from cd.bookings
group by month
order by month
答案 0 :(得分:0)
select
之后, group by
未执行。它不是在它们之前。
SQL查询表示数据库操作应生成的结果集。实际上,实际处理通常是数据流操作的有向非循环图(DAG) - 远离SQL查询本身的子句。
ANSI标准规定了解释别名的逻辑顺序。通常,select
中定义的别名不适用于where
和group by
子句。
但是,某些数据库扩展了范围规则(MySQL是另一个)并允许在group by
中使用此类别名。这被视为功能。但是当列别名与表中列的名称冲突时,它可能会导致误导性解释。