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

Hackerrank基础JOIN测试报错:求大洲平均城市人口SQL问题

问题分析与修正方案

你的SQL语句存在两个关键问题:

1. 取整函数不符合要求

题目明确要求对城市人口平均值向下取整,但你使用的ROUND(AVG(city.population), 0)是四舍五入取整,会把小数部分≥0.5的值进一位,这和“向下取整”的要求不符。正确的做法是使用FLOOR()函数,它会直接舍去所有小数部分,返回不大于平均值的最大整数。

2. 连接类型遗漏了无城市的大洲

你使用的JOIN是内连接,只会保留同时在CITY和COUNTRY表中有匹配记录的大洲。但题目要求查询所有大洲,哪怕某个大洲没有对应的城市记录,也需要被包含在结果中。因此应该改用LEFT JOIN,以COUNTRY表作为左表,确保所有大洲都能被查询到。

修正后的SQL语句

SELECT country.continent, FLOOR(AVG(city.population)) AS avg_population
FROM country
LEFT JOIN city ON city.countrycode = country.code
GROUP BY country.continent;

如果需要将无城市大洲的平均值显示为0而非NULL,可以用COALESCE()函数处理:

SELECT country.continent, COALESCE(FLOOR(AVG(city.population)), 0) AS avg_population
FROM country
LEFT JOIN city ON city.countrycode = country.code
GROUP BY country.continent;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:23:19