gpt4 book ai didi

mysql - 如何从两个数据库查询数据并按范围对结果进行分组

转载 作者:行者123 更新时间:2023-11-29 16:01:32 25 4
gpt4 key购买 nike

练习:

我有一个名为 WEATHER 的表,记录了城市的温度,其格式如下:

Table 1

我还有一个附加表,其中包含有关的更多信息每个城市; CITY 表的架构如下:

table 2

我正在尝试编写一个查询来查询 WEATHERCITY 表并输出以下:

每个国家的最高气温(按城市人口分组):

  • 小城市:人口规模小于 100 万
  • 中型城市:人口在 100 万到 500 万之间
  • 大城市:人口超过 500 万

我已经搜索了有关如何创建别名以及 CASE 语句如何在 SQL 上工作的方法和示例,但我正在努力获得所需的输出。

这是我设法得到的:

SELECT
CITY.Country,
WEATHER.AVG(Maximum_Temperature) as Max_Temp,
case CITY.Population
when < 1000000 then "Small"
when > 5000000 then "Large"
else "Medium"
FROM
CITY
INNER JOIN
WEATHER
ON
WEATHER.City_Name = CITY.City_Name
GROUP BY
CITY.Country

输出应如下所示:

output table

最佳答案

以下是您尝试执行的操作的正确语法:

SELECT C.Country, AVG(W.Maximum_Temperature) as Max_Temp,
(case when c.Population < 1000000 then 'Small'
when c.Population > 5000000 then 'Large'
else 'Medium'
end)
FROM CITY C INNER JOIN
WEATHER W
ON W.City_Name = C.City_Name
GROUP BY C.Country,
(case when c.Population < 1000000 then 'Small'
when c.Population > 5000000 then 'Large'
else 'Medium'
end);

注意更改:

  • SQL 使用单引号来分隔字符串,而不是双引号(尽管某些数据库支持扩展功能)。
  • 语法WEATHER.AVG() 不符合您的预期。在大多数数据库中,它将在 WEATHER 架构/数据库中查找名为 AVG() 的用户定义函数。
  • 您确实想要限定所有列引用。
  • 为了解决这个问题,我添加了表别名作为表名称的缩写。
  • case 表达式需要位于 GROUP BY 中。

关于mysql - 如何从两个数据库查询数据并按范围对结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157118/

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