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

含WHERE IN、GROUP BY的SQL子查询统计热门邮编问题排查

你编写的SQL存在以下问题
  • 子查询中多余的ORDER BY语句:IN条件匹配子查询返回结果时不关心结果顺序,此处的排序完全无意义,部分SQL执行引擎甚至会直接忽略子查询内的ORDER BY(除非同时搭配LIMIT使用),属于冗余代码。
  • 统计逻辑存在误差:你用COUNT(postal_code)统计频次时,会自动忽略postal_code为NULL的餐厅记录,如果你需要统计该邮编下符合条件的餐厅总数,建议替换为COUNT(*)或COUNT(business_ID),统计结果更准确。
  • 别名语法不规范:你给频次别名加了单引号'frequency',虽然部分数据库(如MySQL)兼容这种写法,但严格SQL规范中单引号代表字符串常量,别名应该使用反引号包裹或者不加引号,避免部分数据库执行时报错。
  • *如果需求中“热度”对应表中单独的热度分字段(比如hot_score),你的SQL完全没有做热度相关的筛选排序,只是统计了符合条件的所有者的餐厅的邮编出现次数,和需求要求的“热度排名前10的位置”逻辑完全不符。如果你的需求中“频次就是热度”,可忽略这一条。
修正后的参考SQL(假设频次即热度)
SELECT postal_code, COUNT(*) AS `frequency`
FROM businesses
WHERE owner_name IN (
    SELECT owner_name
    FROM businesses
    GROUP BY owner_name
    HAVING COUNT(*) > 5
)
GROUP BY postal_code
ORDER BY `frequency` DESC
LIMIT 10;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:01