postgres中的列别名用于计算值

dub*_*kkk 4 sql postgresql alias aggregate

我尝试在postgres中使用别名来进行此查询,但postgres停止并抱怨ERROR:列"subtotal"不存在

SELECT SUM(price) AS subtotal, 
       subtotal * 3.0 AS fees,
       (subtotal + fees) AS total
  FROM cart
Run Code Online (Sandbox Code Playgroud)

您不能将别名用作下一列的一部分吗?

OMG*_*ies 6

不,您不能在同一SQL语句中重用列别名 - 使用:

SELECT SUM(t.price) AS subtotal,
       SUM(t.price) * 3.0 AS fees,
       SUM(t.price + fees) AS total
  FROM CART t
Run Code Online (Sandbox Code Playgroud)

您可以在ORDER BY子句中引用列别名,某些数据库也支持在GROUP BYHAVING子句中引用.