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

如何用HAVING子句返回多行子查询结果?含MAX面积查询需求

用HAVING子句获取每个城镇最高resale_value对应的最小floor_area_sqm

需求说明

需要实现SQL查询,基于HAVING子句返回所有城镇(如26个)的数据,要求每条数据对应该城镇中resale_value最高的记录里,floor_area_sqm最小的那一行。当前查询仅返回1行,需修正。

测试数据

Townfloor_area_sqmresale_value
toronto304500
chicago44300
toronto223000
sydney543098
pittsburg1022000
sydney1012000
pittsburg1292000

当前错误查询及结果

错误查询语句

SELECT town, floor_area_sqm, resale_price
FROM X.flat_prices as X
GROUP BY town
HAVING Min(floor_area_sqm) = (SELECT MIN(floor_area_sqm) FROM X.flat_prices HAVING MAX(resale_price));

注:语句中resale_price应为resale_value,属于字段名笔误;且子查询未关联城镇,是全局查询,导致仅匹配到1条结果。

当前返回结果

Townfloor_area_sqmresale_value
chicago44300

期望返回结果

Townfloor_area_sqmresale_value
chicago44300
toronto223000
sydney543098
pittsburg1022000

解决方案

修正后的HAVING子句查询

通过关联子查询绑定当前城镇,确保每个城镇都能筛选出自身最高resale_value对应的最小floor_area_sqm:

SELECT 
    town, 
    MIN(floor_area_sqm) AS floor_area_sqm, 
    MAX(resale_value) AS resale_value
FROM X.flat_prices fp
GROUP BY town
HAVING MAX(resale_value) = (
    SELECT MAX(resale_value) 
    FROM X.flat_prices 
    WHERE town = fp.town
);

逻辑说明:

  1. 按town分组,先计算每个城镇的最高resale_value和最小floor_area_sqm
  2. HAVING子句通过关联子查询验证,确保当前分组的最高resale_value确实是该城镇的全局最高值
  3. 最终返回每个城镇符合要求的记录

复用逻辑查询MAX floor_area_sqm(无需JOIN)

不需要使用JOIN,同样可以用HAVING子句实现。比如要获取每个城镇最高resale_value对应的最大floor_area_sqm:

SELECT 
    town, 
    MAX(floor_area_sqm) AS floor_area_sqm, 
    MAX(resale_value) AS resale_value
FROM X.flat_prices fp
GROUP BY town
HAVING MAX(resale_value) = (
    SELECT MAX(resale_value) 
    FROM X.flat_prices 
    WHERE town = fp.town
);

如果需要返回原始记录而非聚合值,也可以用以下写法:

SELECT town, floor_area_sqm, resale_value
FROM X.flat_prices fp
WHERE resale_value = (
    SELECT MAX(resale_value) 
    FROM X.flat_prices 
    WHERE town = fp.town
)
GROUP BY town, resale_value
HAVING floor_area_sqm = MAX(floor_area_sqm);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:24:23