显示的查询包括一个 JOIN t 世界表,因此我们可以访问每个国家的总人口并计算感染率(每 100,000 例(。
显示每个国家/地区的感染率排名。仅包括人口至少为 1000 万的国家/地区。
答。
SELECT world.name,
ROUND(100000*confirmed/population,00) as rd,
rank() over (order by rd)
FROM covid
JOIN world ON covid.name=world.name
WHERE whn = '2020-04-20'
AND population > 10000000
ORDER BY population DESC
上面的代码是我的解决方案,但我仍然得到错误的答案。有谁知道正确的解决方案?
这里确认感染率/人口; 所以查询如下-
SELECT world.name,
ROUND(100000*confirmed/population,0),
RANK() OVER (ORDER BY confirmed/population) AS rank
FROM covid JOIN world ON covid.name=world.name
WHERE whn = '2020-04-20' AND population > 10000000
ORDER BY population DESC
-
网站上的答案四舍五入到小数点后 2 位,因此需要在 ROUND 函数中指定。
-
如果将 ORDER BY rf(在第 2 行创建的变量(与 RANK 函数结合使用,则 RANK 函数使用现在四舍五入的数字,使值相等,从而在排名中创建平局(例如,尼泊尔和埃塞俄比亚都是 6(。答案使用原始数据,因此消除了队伍中的联系。因此,会给您带来令人满意的查询是:
SELECT world.name, ROUND(100000*confirmed/population,2), RANK() OVER(ORDER BY 100000*confirmed/population) AS rank FROM covid JOIN world ON covid.name=world.name WHERE whn = '2020-04-20' AND population > 10000000 ORDER BY population DESC