首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子查询帮助Postgres

子查询帮助Postgres
EN

Stack Overflow用户
提问于 2022-02-12 22:08:00
回答 1查看 59关注 0票数 -1

我的模式中有两个表:

1- covid_data (相关栏目:国家、年份、周、案例)。数据示例:

代码语言:javascript
复制
+-------+------+-----+-------+
|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 (相关栏:国家)

代码语言:javascript
复制
+-------+
|country|
+--------
|USA    | 
|France | 
|Brazil | 
|Germany| 
|China  | 
+-------+

我需要在countries_of_the_world.检索每个国家的最新记录“最近记录”的规则由中的较高值和week中较高的值决定。例如,现在我们在2022年的第6周。

我执行了以下代码:

代码语言:javascript
复制
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,因为这周在过去的一年中“可用”:

代码语言:javascript
复制
+--------------------+
|country| year | week|
+--------------------+
|USA    | 2022 | 53  |
+--------------------+

我如何进行这个查询,包括加入每个国家与另一个表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-12 22:33:54

未经测试,但以下是否给出了你想要的?

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71096259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档