Postgresql子句优先级

时间:2018-02-25 14:56:44

标签: sql postgresql

为什么group by子句使用' month'别名和作品?我想过要选择'在' group by'之后执行子句。我是对的,在任何条款之前执行函数吗?

select date_trunc('month', starttime) as month, count(*)
    from cd.bookings
    group by month
order by month

1 个答案:

答案 0 :(得分:0)

select之后,

group by未执行。它不是在它们之前。

SQL查询表示数据库操作应生成的结果集。实际上,实际处理通常是数据流操作的有向非循环图(DAG) - 远离SQL查询本身的子句。

ANSI标准规定了解释别名的逻辑顺序。通常,select中定义的别名不适用于wheregroup by子句。

但是,某些数据库扩展了范围规则(MySQL是另一个)并允许在group by中使用此类别名。这被视为功能。但是当列别名与表中列的名称冲突时,它可能会导致误导性解释。