mysql - 求 mysql 中的最大值

标签 mysql sql mysql-workbench

我正在使用名为 covid_vaccinations 的表。

简单解释一下该表,它追踪了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_complete_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_complete_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;

关于mysql - 求 mysql 中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70783255/

相关文章:

php - 为每个帖子动态添加列到 WordPress 自定义数据库表

java - 在插入mysql数据库之前,我们如何使用java检查是否有重复值

php - 反复尝试使用 PHP 执行 MySQL 查询

java - Android - 将参数发送到 php 脚本以在查询中使用它

mysql - 如何在 SQL 中查找值的百分比?

mysql - 从 MySQL 数据库中获取最高值(value)

php - SQL:动态扩展搜索条件

MySQL Workbench 架构同步导致错误 1064

MySQL修改表奇怪的键错误

mysql - 使用 OLEDB 连接 localhost sql 数据库