gpt4 book ai didi

mysql - 根据重复的列值过滤我们的行

转载 作者:行者123 更新时间:2023-11-30 21:47:15 26 4
gpt4 key购买 nike

我必须从 mondial 数据库中进行一些查询,我特别关注其中一个。我必须展示每个大洲人均 DPG 最高的国家。(一个用于欧洲,一个用于亚洲,一个用于非洲等)

我可以显示每个大陆的所有国家和他们的人均国内生产总值:

    SELECT DISTINCT continent.name, country.name, cast(1000000*(economy.gdp/country.population) AS decimal(16,2)) AS dgpPerCapita
FROM country
JOIN economy ON country.code = economy.country
JOIN encompasses ON economy.country = encompasses.country
JOIN continent ON encompasses.continent = continent.name
WHERE cast(1000000*(economy.gdp/country.population) AS decimal(16,2)) is not null
order by cast(1000000*(economy.gdp/country.population) AS decimal(16,2)) desc

但我无法过滤掉内容中重复的行。

我要找的是这样的东西:

continent                         DGPPERCAPITA    
Europe Monaco 156004.89
Asia Qatar 125394.62
America Bermuda 87177.17
Australia/Oceania Australia 64317.35

我对查询很陌生,我花了很多时间寻找答案并找到了这个:

SELECT *
FROM(
SELECT continent.name, country.name,
cast(1000000*(economy.gdp/country.population) AS decimal(16,2)) AS dgpPerCapita,
ROW_NUMBER() OVER(PARTITION BY continent.name ORDER BY
cast(1000000*(economy.gdp/country.population) AS decimal(16,2)) DESC) rn

FROM country
JOIN economy ON country.code = economy.country
JOIN encompasses ON economy.country = encompasses.country
JOIN continent ON encompasses.continent = continent.name
) a
WHERE rn = 1

但它给了我一些错误。

任何帮助将不胜感激。

我用来测试查询的网站是:http://www.semwebtech.org/sqlfrontend/

最佳答案

我知道你为什么会遇到那个特定的错误,那么“名称”列对于 Country 和 Continent 表是不明确的,在子查询中以不同的方式命名它们,你就完成了。我不确定您提到的另一个错误是什么。

关于mysql - 根据重复的列值过滤我们的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48887368/

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