gpt4 book ai didi

所有行的 MySQL AVG() 函数

转载 作者:行者123 更新时间:2023-11-30 22:19:01 27 4
gpt4 key购买 nike

我试图返回一个列表,其中列出了人口大于世界平均人口的每个国家的名称,以及我的数据库中世界平均人口与该国家/地区人口之间的差异:

国家数据库的形式是:代码、名称、大陆、地区、表面积、IndepYear、人口、预期生命周期、GNP、GNPOld、LocalName、GovernmentForm、HeadOfState、Capital、Code2

到目前为止,我已经得出了这段代码:

CREATE 
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `average_population` AS
SELECT
`country`.`Code` AS `code`,
`country`.`Name` AS `name`,
`country`.`Continent` AS `continent`,
`country`.`Region` AS `region`,
`country`.`Population` AS `population`
FROM
`country`
GROUP BY code
HAVING AVG(population) > (SELECT AVG(Population)
FROM country)

如果我在第一个 select 语句中设置 AVG(population),这只会返回一条记录?

我如何从我的数据库中获取人口大于世界平均人口的每个国家的名称列表,以及世界平均人口与该国家/地区人口之间的差异?

最佳答案

如果您需要在一行中完成,您可以使用嵌套选择。

SELECT Name, (Population - (SELECT AVG(Population) FROM country)) as 'OverAverage'
FROM country
WHERE Population > (SELECT AVG(Population) FROM country)

如果可能,如果您事先计算并存储平均值,效率会高得多。这样您就不需要为每一行运行平均函数。

关于所有行的 MySQL AVG() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37261296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com