我的模式中有两个表:
1- covid_data (相关栏目:国家、年份、周、案例)。数据示例:
+-------+------+-----+-------+
|country| year | week| cases |
+-------+------+-----+-------+
|USA | 2022 | 1 | 58488 |
|USA | 2022 | 2 | 65154 |
|USA | 2022 | 3 | 74154 |
|USA | 2022 | 4 | 84158 |
|USA | 2022 | 5 | 96997 |
+-------+------+-----+-------+countries_of_the_world (相关栏:国家)
+-------+
|country|
+--------
|USA |
|France |
|Brazil |
|Germany|
|China |
+-------+我需要在countries_of_the_world.检索每个国家的最新记录“最近记录”的规则由年中的较高值和week中较高的值决定。例如,现在我们在2022年的第6周。
我执行了以下代码:
SELECT country, max(year), max(week)
FROM covid_data
WHERE week in (
SELECT MAX(week)
FROM covid_data
WHERE year in (
SELECT MAX(year)
FROM covid_data
GROUP BY year)
GROUP BY week)
GROUP BY country;但却像信息一样被分离了。例如,week 53 For year 2022,因为这周在过去的一年中“可用”:
+--------------------+
|country| year | week|
+--------------------+
|USA | 2022 | 53 |
+--------------------+我如何进行这个查询,包括加入每个国家与另一个表?
发布于 2022-02-12 22:33:54
未经测试,但以下是否给出了你想要的?
with c as (
select country, cases,
Row_Number() over(partition by country order by year desc, week desc) rn
from covid_data
)
select country, cases
from c
where rn = 1;https://stackoverflow.com/questions/71096259
复制相似问题