关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
11个月前关门了。
改进这个问题
我有一个数据集,其中包含2019年12月至2020年4月期间世界各国记录的冠状病毒病例列表。我正在尝试编写一个sql查询,以给出这段时间内排名前十位的国家的累计总数(即最后总数最高的国家)。
我首先编写了一个查询,给出所有国家的累计总数,然后尝试编写一个子查询,将此列表限制为只包含前十个国家的数据。
SELECT
Virus.dateRep,
Country.countriesAndTerritories,
SUM(Virus.cases) OVER (PARTITION BY Country.geoId ORDER BY Dates.year, Dates.month, Dates.day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS 'cume_cases',
SUM(Virus.deaths) OVER (PARTITION BY Country.geoId ORDER BY Dates.year, Dates.month, Dates.day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS 'cume_deaths'
FROM
Virus
INNER JOIN
Dates ON (Virus.dateRep = Dates.dateRep)
INNER JOIN
Country ON (Virus.geoId = Country.geoId)
WHERE Virus.geoId IN (SELECT
Virus.geoId, sum(Virus.cases) as 'total'
FROM
Virus
GROUP BY
Virus.geoId
ORDER BY
total
DESC
LIMIT 10)
GROUP BY
Country.geoId,
Virus.dateRep
ORDER BY
Dates.year,
Dates.month,
Dates.day,
Country.countriesAndTerritories
ASC;
但是,子查询只允许查询一列,因此不起作用。有什么解决办法吗?
1条答案
按热度按时间xmakbtuz1#
只能使用一列执行此操作: