sql - 查询 WITH 子句错误

标签 sql postgresql

以下查询产生了“关系模板不存在”错误。如果您能帮助弄清楚如何使 WITH 子句起作用,那将是非常好的。我们正在运行 postgresql 8.0.2。谢谢!

WITH tempTable AS (
    SELECT AVG(subtotal_price) AS AverageValue
    FROM orders
)

SELECT subtotal_price
FROM orders
WHERE orders.subtotal_price > tempTable.AverageValue

最佳答案

您应该在 CTE 上使用子查询来获取平均值:

WITH tempTable AS
(
    SELECT AVG(subtotal_price) AS AverageValue
    FROM orders
)

SELECT subtotal_price
FROM orders
WHERE subtotal_price > (SELECT AverageValue FROM tempTable);

但是,这是使用 AVG 作为分析函数的另一种方法:

SELECT subtotal_price
FROM
(
    SELECT subtotal_price, AVG(subtotal_price) OVER () AverageValue
    FROM orders
) t
WHERE subtotal_price > AverageValue;

关于sql - 查询 WITH 子句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939076/

相关文章:

sql - 优化 PostgreSQL 中的 SQL 查询

mysql - 在非常慢的服务器 2 上替代内连接

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 从表 A 中选择在表 B 中至少有 X 条记录的记录

sql - 如何查询最后 3 次出现的所有行的平均数据

sql - 在 postgresql 函数中将变量放在查询上

macos - 忘记了 Postgresql 的密码 - 重置密码 - Mac OS X Leopard

asp.net - 表被同一记录多次更新

ios - 执行插入或更新 2 个表 SQLITE 的有效方法

sql - 合并具有不同列的 PostgreSQL 查询