首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >联接中ON子句中的集合函数

联接中ON子句中的集合函数
EN

Stack Overflow用户
提问于 2019-02-15 14:31:33
回答 3查看 76关注 0票数 1

为什么Postgres不允许我在联接中使用聚合函数?

代码语言:javascript
运行
复制
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“的列,但是不能从查询的这一部分引用它。

EN

Stack Overflow用户

发布于 2019-02-15 19:54:19

当然,除了现有的答案之外,您还可以使用派生表使用原始查询,只需将隐式更改为显式联接:

代码语言:javascript
运行
复制
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; 
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54711464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档