ROW_NUMBER() OVER (PARTITION BY id ORDER BY createTime DESC)的用法讲解(文心一言自动生成的博客)

好的,以下是一个使用ROW_NUMBER() OVER (PARTITION BY id ORDER BY createTime DESC)的简单示例:

假设我们有一个名为"records"的表,包含以下列:

  • id: 记录的唯一标识符
  • createTime: 记录创建的时间戳
  • value: 记录的值

表结构如下:

id createTime value
1 2023-07-01 100
1 2023-07-02 200
1 2023-07-03 150
2 2023-07-01 50
2 2023-07-02 150
3 2023-07-01 80

现在,我们想要找到每个id的最新的记录,即根据createTime降序排序后的第一条记录。我们可以使用ROW_NUMBER() OVER (PARTITION BY id ORDER BY createTime DESC)来实现这个目标。

以下是使用此函数的查询示例:

SELECT id, createTime, value 
FROM ( 
SELECT id, createTime, value, 
ROW_NUMBER() OVER (PARTITION BY id ORDER BY createTime DESC) AS rn 
FROM records 
) AS subquery 
WHERE rn = 1;


查询结果如下:

id createTime value
1 2023-07-03 150
2 2023-07-02 150
3 2023-07-01 80

在这个结果中,我们得到了每个id的最新的记录,即根据createTime降序排序后的第一条记录。每个分区(即每个id)内部的记录按照createTime降序排序,并且分配了一个行号(rn)。外部查询选择了行号为1的记录,也就是每个分区中的第一条记录。这样,我们得到了每个id的最新记录。

你可能感兴趣的:(sql,数据库,PARTITION,BY,OW_NUMBER,OVER)