【发布时间】:2017-12-15 18:52:15
【问题描述】:
我有一个带有order_id 和extended_price 列的order_lines 表。我想知道扩展价格总和高于所有订单扩展价格总和平均值的订单。这是我得到的查询:
SELECT order_id, SUM(extended_price) AS "sumtotal"
FROM order_lines e
GROUP BY order_id
HAVING SUM(extended_price) >
(SELECT AVG(c.sumtotal) AS "avgtotal"
FROM
(SELECT order_id, SUM(extended_price) AS "sumtotal"
FROM order_lines
GROUP BY order_id) c
)
ORDER BY sumtotal
正如我们所见,我有一个子查询 c 来获取用于计算 avgtotal 的 sumtotal。但我正在运行与主查询相同的查询,以再次计算sumtotal 并与avgtotal 进行比较。有没有更好的方法只使用标准 SQL 功能来做到这一点。我正在使用 PostgreSQL。
【问题讨论】:
标签: sql postgresql subquery aggregate-functions window-functions