寻找最大值中的最大值 mysql

Finding Max of Max mysql

我正在使用名为 covid_vaccinations 的 table。

简单说明一下table,它追踪了从2020年2月xx日到2022年1月XX日的每一天所有国家的疫苗接种完成情况。

为了查找在亚洲完全接种疫苗的人,我使用了以下查询:

SELECT continent,location, MAX(people_fully_vaccinated)
FROM covid_vaccinations
WHERE continent LIKE '%ASIA%'
GROUP BY continent, location
ORDER BY 3 DESC;

我使用了 MAX(),因为 列包括数据的累计数量。

上面的查询给了我想要的结果,见<image 1>

这是我的问题:

如果我只想获得people_fully_vaccinated的最大结果,我应该如何编写查询? 我在下面尝试过,它给了我与

相同的结果
SELECT location, MAX(peep_f_vacc_asia)
FROM (
     SELECT location, MAX(people_fully_vaccinated) as peep_f_vacc_asia
     FROM covid_vaccinations
     WHERE continent LIKE '%ASIA%'
     GROUP BY continent,location
     ) A
GROUP BY location
ORDER BY 2 DESC;

我想看到的结果只有一行,中国(people_fully_vaccinated数量最多)

非常感谢你们...

您可能只需使用 LIMIT 查询就可以逃脱。对您的第一个查询稍作修改:

SELECT continent, location, MAX(people_fully_vaccinated)
FROM covid_vaccinations
WHERE continent LIKE '%ASIA%'
GROUP BY continent, location
ORDER BY 3 DESC
LIMIT 1;

但这仅适用于特定大陆和位置与最大完全接种疫苗人数无关的情况。如果您确实需要担心关系,并且您正在使用 MySQL 8+,那么我们可以使用 RANK,如下所示:

WITH cte AS (
    SELECT continent, location, MAX(people_fully_vaccinated) AS max_fv,
           RANK() OVER (ORDER BY MAX(people_fully_vaccinated) DESC) rnk
    FROM covid_vaccinations
    WHERE continent LIKE '%ASIA%'
    GROUP BY continent, location
)

SELECT continent, location, max_fv
FROM cte
WHERE rnk = 1;