大佬教程收集整理的这篇文章主要介绍了Postgresql:如何从每个组/类别中选择前n个%(%)条目,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
要基于每个组中行数的百分比来检索行,可以使用两个窗口函数:一个对行进行计数,另一个对行赋予唯一编号。
SELEct gp,
val
from (
SELEct gp,
val,
count(*) over (partition by gp) as cnt,
row_number() over (partition by gp order by val desc) as rn
from temp
) t
where rn / cnt <= 0.75;
sqlfiddle示例:http://sqlfiddle.com/#!15/94fdd/1
顺便说一句:使用char
几乎总是一个坏主意,因为它是固定长度的数据类型,被填充为定义的长度。我希望您只是为了设置示例而已,不要在实际表中使用它。
我们是POSTGRes的新手,我们有以下查询,通过该查询我们可以从每个类别中选择前N个记录。
create table temp (
gp char,val int
);
insert into temp values ('A',10);
insert into temp values ('A',8);
insert into temp values ('A',6);
insert into temp values ('A',4);
insert into temp values ('B',3);
insert into temp values ('B',2);
insert into temp values ('B',1);
SELEct a.gp,a.val
from temp a
where a.val in (
SELEct b.val
from temp b
where a.gp=b.gp
order by b.val desc
limit 2);
以上查询的输出是这样的
gp val
----------
A 10
A 8
B 3
B 2
但是我们的要求有所不同,我们想从每个类别中选择前n%个记录,其中n不固定,n基于每个组中某些元素的百分比。
以上是大佬教程为你收集整理的Postgresql:如何从每个组/类别中选择前n个%(%)条目全部内容,希望文章能够帮你解决Postgresql:如何从每个组/类别中选择前n个%(%)条目所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。