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

SQL查询疑问:如何正确获取GDP最低的国家及其对应GDP值

解决SQL查询GDP最低国家的问题

这个问题我之前也碰到过!核心原因是你最初的查询写法不符合SQL标准(虽然有些数据库允许执行)——当你使用聚合函数MIN()但没有正确关联非聚合列Name时,数据库没办法知道要返回哪一行的Name,所以就随便拿了表中第一行的值。而直接加GROUP BY Name会把每个国家都分组,自然会返回所有结果。

下面给你几种靠谱的解决方案,按需选择:

方法1:子查询匹配最低GDP(推荐,支持并列)

先通过子查询找到全局最低的GDP值,再回到原表筛选出GDP等于这个值的国家:

SELECT Name, GDP
FROM your_table
WHERE GDP = (SELECT MIN(GDP) FROM your_table);

这个方法的好处是如果有多个国家的GDP并列最低,会把所有这些国家都返回,逻辑更严谨。

方法2:排序+限制行数(简洁,适合只需要一个结果)

如果你的数据库支持LIMIT(比如MySQL、PostgreSQL),可以先按GDP升序排序,再只取第一行:

SELECT Name, GDP
FROM your_table
ORDER BY GDP ASC
LIMIT 1;

注意:如果有多个国家GDP并列最低,这个方法只会返回排序后的第一个国家,不会返回所有并列项。

方法3:窗口函数(灵活处理排名场景)

如果你的数据库支持窗口函数(比如MySQL 8+、PostgreSQL、SQL Server),可以用RANK()函数给GDP排名,再筛选排名第一的行:

SELECT Name, GDP
FROM (
    SELECT Name, GDP,
           RANK() OVER (ORDER BY GDP ASC) AS gdp_rank
    FROM your_table
) ranked_data
WHERE gdp_rank = 1;
  • 用RANK()会给并列最低的国家相同的排名,所以所有并列项都会被返回;
  • 如果只想取其中一个,可以把RANK()换成ROW_NUMBER(),它会给每一行分配唯一的序号(即使GDP相同)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:14:47