寻找最大值中的最大值 mysql
Finding Max of Max mysql
我正在使用名为 covid_vaccinations 的 table。
简单说明一下table,它追踪了从2020年2月xx日到2022年1月XX日的每一天所有国家的疫苗接种完成情况。
- 国家名称在此 table 中称为 'location'。
- 国家(位置)也分类在 'continent'
列中
为了查找在亚洲完全接种疫苗的人,我使用了以下查询:
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;
我正在使用名为 covid_vaccinations 的 table。
简单说明一下table,它追踪了从2020年2月xx日到2022年1月XX日的每一天所有国家的疫苗接种完成情况。
- 国家名称在此 table 中称为 'location'。
- 国家(位置)也分类在 'continent' 列中
为了查找在亚洲完全接种疫苗的人,我使用了以下查询:
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;