【发布时间】:2021-01-19 13:02:31
【问题描述】:
以 Northwind 为例。我想使用 CASE 子句通过比较 units_in_stock 与其 AVG 值并将此值放在多个 BETWEEN 中来创建类别> 条款。这就是我得到的:
SELECT product_name, unit_price, units_in_stock,
CASE
WHEN units_in_stock > (SELECT AVG(units_in_stock) + 10 FROM products) THEN 'many'
WHEN units_in_stock BETWEEN (SELECT AVG(units_in_stock) - 10 FROM products) AND (SELECT AVG(units_in_stock) + 10 FROM products) THEN 'average'
ELSE 'low'
END AS amount
FROM products
ORDER BY units_in_stock;
根据 pgAdmin 中的分析工具 AVG(units_in_stock) 计算了 3 次。有没有办法减少计算量?
【问题讨论】:
标签: postgresql subquery case average window-functions