为什么Postgres不允许我在联接中使用聚合函数?
SELECT p.id, p.actual_price,
h1.min_price, h1.max_price
FROM (
SELECT min(price) as min_price, max(price) as max_price, product_id
FROM prices_history
WHERE timestamp > '2019-01-01'
GROUP BY product_id
) AS h1,
products p
JOIN (
SELECT max(timestamp), price, product_id
FROM prices_history
WHERE timestamp > '2019-01-01'
GROUP BY product_id, price
) AS h2
ON h2.product_id = p.id
AND h2.price = h1.min_price
WHERE
p.id = h1.product_id
GROUP BY p.id, p.actual_price, h1.min_price, h2.max_price
ORDER BY p.id;错误:列" min_price“不存在第19行:和min_price^提示:表"h1”中有一个名为"min_price“的列,但是不能从查询的这一部分引用它。
发布于 2019-02-15 19:54:19
当然,除了现有的答案之外,您还可以使用派生表使用原始查询,只需将隐式更改为显式联接:
SELECT p.id, p.actual_price,
h1.min_price, h1.max_price
FROM (
SELECT min(price) as min_price, max(price) as max_price, product_id
FROM prices_history
WHERE timestamp > '2019-01-01'
GROUP BY product_id
) AS h1
JOIN
products p
ON p.id = h1.product_id
JOIN (
SELECT max(timestamp), price, product_id
FROM prices_history
WHERE timestamp > '2019-01-01'
GROUP BY product_id, price
) AS h2
ON h2.product_id = p.id
AND h2.price = h1.min_price
GROUP BY p.id, p.actual_price, h1.min_price, h2.max_price
ORDER BY p.id; https://stackoverflow.com/questions/54711464
复制相似问题