我正在使用一個名為 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() 因為 <people_fully_vaccinated> 列包含資料的累積數量。
上面的查詢給了我想要的結果,見 <image 1>
這是我的問題:
如果我只想獲得 people_fully_vaccinated 的 GREATEST 結果,我應該如何撰寫查詢?我在下面嘗試過,它給了我與 <image 1> 相同的結果
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 的人數最多)
十分感謝大家...
uj5u.com熱心網友回復:
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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417214.html
標籤:
