mysql - 在 SQL 中,如何输出对多个列执行函数的列?

标签 mysql sql function

我正在学习 SQL(特别是 mySQL),并且一直在解决 sqlzoo 上的问题集。

我被 one problem that is asking me to show the population of a country as a percentage of some other country. 难倒了它是数字 5。请注意没有显示完整的表格,但是表格的内容可以根据参数推断:world(name, continent, area, population, gdp)

我不确定两件事:

  1. 如何实现两列数据之间的划分功能,以及
  2. 如何在不创建新变量的情况下(使用“AS”)将此数据转换为百分比。

这是我尝试过的(为了便于阅读而缩进):

SELECT name, CONCAT(ROUND(new_population))from world WHERE 
continent = 'Europe' AND
((SELECT population AS new_population from world) / 
(SELECT population FROM world where name='Germany'));

给出的错误是“‘字段列表’中的未知列‘new_population’”,这让我相信我不明白“AS”是如何工作的。

我意识到这实际上没有意义,因为“AND”之后的值是新值,因此它们不能作为我原始 select 语句的条件。但我不太确定如何以其他方式合并该功能。

此外,请耐心等待,因为这是我自学的,所以我真的没有人可以指导我完成它。谢谢!

最佳答案

您走在正确的轨道上,但您想在 SELECT 中向上而不是在 WHERE 中执行此逻辑。 WHERE 仅用于过滤结果集。 SELECT 是您在结果集中放置所需内容的地方。

SELECT
    name,
    population/(SELECT population FROM world WHERE name='Germany' limit 1) * 100
FROM world
WHERE continent = 'Europe'

或者,您可以使用 CROSS JOIN 执行此操作:

SELECT
    name,
    world.population/germany.population * 100 
FROM world CROSS JOIN (SELECT population FROM world WHERE name = 'Germany') as germany
WHERE continent = 'Europe'

不太确定哪个更适合您正在学习的教程。

关于mysql - 在 SQL 中,如何输出对多个列执行函数的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399716/

相关文章:

SQL查询以获取最后一个二进制文件的左或右位置

sql - 强制外键引用的行具有相同的不同外键

java - 在java中生成函数值

javascript - 基本表单验证函数 checkRadio() 未发布错误消息

javascript - 创建重复值的JS数组

mysql - 从R中的mysql(使用for循环(?))选择数据

python - 生成 Joomla 页面的脚本

javascript - 在 NetBeans 中运行 AJAX PHP 示例

mysql - 使用多对多表 MySQL 进行过滤

php - 仅从完整的 MySql 数据库导出导入表