You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从相似标签的SQL记录分组中获取金额的最小值与最大值

问题说明

你现有写法在开启严格GROUP BY校验的数据库(如MySQL 5.7+、PostgreSQL、Oracle)中会执行失败,原因是SELECT子句中出现了未参与聚合、也未加入GROUP BY的字段p2.label。

修正方案

方案1:兼容多数据库的关联查询写法

把查询用到的packages表非聚合字段全部加入GROUP BY即可:

SELECT 
  p2.id, 
  p2.label, 
  MIN(p.amount) AS low_price, 
  MAX(p.amount) AS high_price 
FROM prices p 
INNER JOIN packages p2 ON p.package_id = p2.id
GROUP BY p2.id, p2.label

如果packages表的id是主键,可唯一对应label字段,支持函数依赖校验的数据库也可直接使用你原来的写法。

方案2:单表查询简化写法

如果你贴的示例数据全部存储在同一张表,不需要跨表关联,可直接简化写法:

SELECT 
  id,
  label,
  MIN(amount) AS low_price,
  MAX(amount) AS high_price
FROM 表名
GROUP BY id, label

执行结果

最终会返回你需要的2条分组结果:

  • id为1的Syndicate Integrated Webservices标签最低金额6.41,最高金额31.58
  • id为2的Architect Open-Source Partnerships标签最低金额6.24,最高金额41.84

内容的提问来源于stack exchange,提问作者Eric Evans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:09:01