【发布时间】:2016-01-13 06:44:28
【问题描述】:
我知道这是一个非常简单的问题,但我需要有人解释这个查询背后的思考过程。 我有一张与国家相关的大数据表。我想看看哪个国家的人口最少,所以我使用以下查询
SELECT country, MIN(population) AS min_pop FROM countries_by_population;
它返回一个错误,即国家应该在聚合中或在 GROUP BY 中。我很困惑;为什么?这个查询不应该只查看 min(population) 并返回国家名称吗?
在此之后,我将国家添加到这样的 GROUP BY 中
SELECT country, MIN(population) AS min_pop FROM countries_by_population GROUP BY country;
我得到了一张按字母顺序排列的所有国家人口的表格。这是怎么发生的?
在解释了这一点之后,有人可以谈谈正确查询的思考过程吗? 谢谢。
【问题讨论】:
-
您使用的是哪个 RDBMS?
-
数据库中有索引吗?
-
GROUP BY运算符告诉您的数据库将每组国家的结果汇总在一起。对于您的(正确)查询,数据库将返回给定国家/地区每组记录的country和最小人口。祝你正确查询。