- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想选择人口最多的国家。这是我的查询:
SELECT continent, name, population FROM country HAVING population = MAX(population);
它以某种方式返回 0 行。
如果我使用嵌套查询,它会起作用:
SELECT continent, name, population FROM country WHERE population = (SELECT MAX(population) FROM country);
所以我的问题是:第一个查询有什么问题?
PS:你可以在这里下载数据库: http://dev.mysql.com/doc/index-other.html
好吧,我想我终于弄清楚了整个过程。它是如何工作的以及为什么替代建议/解决方案不起作用:
(首先,正如“Dan Bracuk”在他的回答中所说,我们必须将 GROUP BY 与 HAVING 结合起来,并在 SELECT 语句的 beginningng 处添加聚合函数)
所以让我们一步一步来试试这个:
SELECT continent, name, population, MAX(population) FROM country;
这会产生第一行在末尾附加 MAX(pop):
“北美”、“阿鲁巴”、“103000”、“1277558000”
所以 MAX(population) 只是一个条目,所以它将行号限制为 1,因为我添加了大洲、名称、人口列,mysql 只从表中选择第一行。
所以如果我现在写下:
SELECT continent, name, population, MAX(population) FROM country HAVING population = MAX(population);
我得到 0 行,因为 103000 不等于 1277558000。
如果我使用:
SELECT continent, name, population, MAX(population) FROM country GROUP BY name;
例如,我得到了每行 MAX(population) = population 的所有国家/地区的列表。
因此,另外添加“HAVING population = MAX(population)”没有任何效果,因为它已经为真。
我希望我的理解是正确的,并且可以澄清那些想知道为什么其他解决方案不起作用的其他人。
最佳答案
Select continent, name, sum(population) As sumPop
From country
Group By continent
Order By sumPop Desc
Limit 1;
哇,经过大量的反复试验,我明白了现在的问题所在。首先,您的初始查询似乎是错误的。使用您正在使用的数据库表,您可以在大陆内拥有多个区域。因此,您的查询将仅返回(如果工作正常)具有单个最大区域的大陆,而不是所有区域的总和。其次,您绝对可以在 having
子句中使用 max
函数,例如在这个例子中:
Select continent, name, max(population) As sumPop
From country
Group By continent
Having sumPop = max(population)
(如果不按大陆分组,则只会返回一行。)
但是,这对您来说真的没有用,因为此时,最大人口就是该行的人口。不是每一行。这是因为 having
子句只查看该行的值(不管你有多少行)。无论如何,如果您想在您的案例中使用 having
子句(或者您可以使用我的初始查询),您将需要一个子查询,如下所示。
Select continent, name, sum(population) As sumPop, maxPop
From country
Left Join (Select sum(population) As maxPop
From country
Group By continent
Order By maxPop Desc Limit 1) as TmpTable On (maxPop > 0)
Group By continent
Having sumPop = maxPop
http://sqlfiddle.com/#!2/3ab95/26
(这个sqlfiddle没有包含所有的表行,所以结果可能和你自己的不一样。)
关于mysql 世界数据库 : select country with max population,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319734/
快速且可能简单的 Lambda 问题: 我有一家有评论的餐厅。我想查询具有以下内容的那个: 最大(平均评分) 和 Max(ReviewCount) 和 Max(NewestReviewDate) 和
在尝试使用 C++17 折叠表达式时,我尝试实现 max sizeof ,其中结果是类型 sizeof 的最大值。我有一个使用变量和 lambda 的丑陋折叠版本,但我想不出一种使用折叠表达式和 st
我目前正在使用 C 并遇到了一些我觉得有趣的东西,但似乎在这里找不到任何类似的东西。 我正在为数组(大小 1000000)静态分配内存。我知道这相当大并且有可能引起问题。但是,使用 10^6 不会出现
我有一个具有 max-height 的 div 和其中的图像,应该使用 max-width:100% 和 max-height:100%。在 Chromium 中,这是可行的,但 Firefox 仅使
我有一个最大高度的 div 和里面的一个图像,它应该使用最大宽度:100% 和最大高度:100%。在 Chromium 中,这是可行的,但 Firefox 仅使用最大宽度而忽略最大高度。 div#ov
在一本在线 awk 手册中我找到了例子awk '{ if (NF > max) max = NF } END { print max }' 该程序打印任何输入行上的最大字段数。但我不明白 awk 如何
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在制作一个非循环图数据库。 表 Material (id_item,id_collection,...)主键(id_item,id_collection) (item可以是collection本身
我有以下两个表。 1.电影详情(电影ID、电影名称、评分、票数、年份) 2.电影类型(Movie-ID,Genre) 我正在使用以下查询来执行连接并获得每个评分最高的电影流派。 select Movi
我有一个查询,我想返回 idevent 中给定传感器 ID (sensorID) 范围内的最高 ID 值,但是查询没有返回最高值。 我运行查询时减去 max() 语句的结果: mysql> SELEC
SUM(MAX() + MAX()) 有正确的方法吗? 这是我一直在努力做的事情 SELECT SUM(MAX(account.BALANCE1) + MAX(account.BALANCE2))
这个问题类似于CSS media queries: max-width OR max-height , 但由于我的代表不够高,我无法在回复中添加评论(问题),我想在原始问题中添加。 与其他主题中的发帖
Jon Skeet今天报告(source): Math.Max(1f, float.NaN) == NaN new[] { 1f, float.NaN }.Max() == 1f 为什么? 编辑:双倍
这个问题已经有答案了: Java 8 stream's .min() and .max(): why does this compile? (5 个回答) 已关闭 7 年前。 我正在学习1z0-809
我在处理一些数据库记录时遇到了一些挑战。 我需要为特定列获取具有 MAX 值的行,并且这些记录必须介于两个时间戳值之间。 这是SQL查询 SELECT id, MAX(amount), created
我想在媒体查询中使用 AND 条件。我使用了下面的代码,但是没有用 @media screen and (max-width: 995px AND max-height: 700px) { } 最佳答
在编写 CSS 媒体查询时,有什么方法可以用“或”逻辑指定多个条件吗? 我正在尝试做这样的事情: /* This doesn't work */ @media screen and (max-widt
我对仅使用 max(list array) 和 np.max(list array) 之间的区别有疑问。 这里唯一的区别是 Python 返回代码所需的时间吗? 最佳答案 它们在边缘情况下可能不同,例
例如: a = [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.
这个问题在这里已经有了答案: Java 8 stream's .min() and .max(): why does this compile? (5 个答案) 关闭 6 年前。 我正在学习 1z0
我是一名优秀的程序员,十分优秀!