如何选取每个ID的最后一条记录

Hen*_*nry 4 sql postgresql greatest-n-per-group

我需要从表中提取每个用户的最后记录。表架构如下所示。

mytable

product | user_id |
-------------------
   A    |   15    |
   B    |   15    |
   A    |   16    |
   C    |   16    |
-------------------
Run Code Online (Sandbox Code Playgroud)

我想要得到的输出是

product | user_id |
-------------------
   B    |   15    |
   C    |   16    |

Run Code Online (Sandbox Code Playgroud)

基本上是每个用户的最后记录。

提前致谢!

SJN*_*JNF 5

您可以使用名为 的窗口函数ROW_NUMBER。下面为您提供了一个解决方案。我还在 db-fiddle 中为您做了一个演示查询。请检查DB-Fiddle 中的链接演示代码

WITH CTE AS
(SELECT product, user_id,
       ROW_NUMBER() OVER(PARTITION BY user_id order by product desc)
       as RN
FROM Mytable)
SELECT product, user_id FROM CTE WHERE RN=1 ;
Run Code Online (Sandbox Code Playgroud)