gpt4 book ai didi

sql - SELECT 在一列中具有前 n 个计数的记录

转载 作者:行者123 更新时间:2023-11-29 11:55:34 27 4
gpt4 key购买 nike

我正在使用 postgresql 9.2。

我有这样一个数据集:

ID  A   B
1 x x
2 x x
2 x x
2 x x
3 x x
4 x x
4 x x

我想显示具有前 n 个 ID 的记录。比方说,ID 的前 2 个计数——在本例中,ID=2 和 4。所以数据集应该是:

ID  A  B
2 x x
2 x x
2 x x
4 x x
4 x x

我的第一个想法是通过计算top n计数来创建一个新 View ,然后将新 View 的ID与原始表的ID进行匹配,感谢this
然而,查询永远运行,因为 EXISTS 需要大量时间。

我想知道是否有更好的方法来做到这一点?

最佳答案

您可以使用嵌套的窗口函数来做到这一点:

select t.id, t.a, t.b
from (select t.*, dense_rank() over (order by idcnt desc, id) as seqnum
from (select t.*, count(*) over (partition by id) as idcnt
from t
) t
) t
where seqnum <= 2;

您可以查看 SQLFiddle .

关于sql - SELECT 在一列中具有前 n 个计数的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com