我有一个从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
但是我无法过滤掉在contient中重复的行。
我正在寻找的是这样的事情:
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/
答案 0 :(得分:0)
我明白为什么你会遇到这个特定的错误,那么这个专栏名称'对于Country和Continent表来说是不明确的,在子查询中对它们进行不同的命名并且您完成了。我不确定你提到的其他错误是什么。