【发布时间】:2016-05-17 03:14:25
【问题描述】:
我正在尝试从我的数据库中返回一个列表,其中列出了每个人口大于世界平均人口的国家的名称,以及世界平均水平与该国家人口之间的差异:
国家数据库的格式为: 代码、名称、大陆、地区、SurfaceArea、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)
如果我在第一个选择语句中设置了 AVG(population),这只会返回一条记录?
如何从我的数据库中获取人口超过世界平均人口的每个国家/地区的名称列表,以及世界平均水平与该国家/地区人口之间的差异?
【问题讨论】:
-
向我们展示样本数据和期望输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
-
GROUP BY code表示您的表中包含重复代码的行。也就是说,不止一个国家有相同的代码。这对我来说没有意义。它对您的数据有意义吗? -
您是否在寻找该国家/地区在所有时间段 (IndepYear) 的平均值高于所有国家/地区在所有时间段的平均值?
标签: mysql sql mysql-workbench