繁体   English   中英

如何选择N个具有唯一列值的最新行

[英]How can I Select N most recent rows with unique column values

我需要执行查询以从表中检索N个(在本例中为4个)最新行,这些行在特定列上均具有不同的值。

该表是一个印象表,我需要从中检索用户访问过的4个唯一的最新页面,并由page_id colun标识。 我的主要问题出现在用户连续访问同一页面的情况下,因此如果我执行的是天真的话

SELECT page_id 
FROM impressions 
WHERE user_id = #### 
ORDER BY created_at DESC
LIMIT 4;

我最终得到了重复的价值观。

我在这里偶然发现了一个答案,我似乎再也找不到了,它建议使用我尝试过的窗口函数

SELECT page_id, DENSE_RANK() OVER(ORDER BY page_id) as rnk
FROM impressions
WHERE user_id = ####
ORDER BY created_at DESC;

哪个产生或多或少我想要的,得到以下结果:

   page_id | rnk 
-----------+-----
       325 |  10
       325 |  10
       524 |  20
       235 |   5
       235 |   5
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       524 |  20
       499 |  13
       499 |  13

问题是如何从这里开始,也许以这个查询为起点,我最终会得到类似

   page_id | rnk 
-----------+-----
       325 |  10
       524 |  20
       235 |   5
       499 |  13

您可以使用group by

SELECT page_id 
FROM impressions 
WHERE user_id = #### 
GROUP BY page_id
ORDER BY MAX(created_at) DESC
LIMIT 4;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM