Postgresql:如何从每个组/类别中选择前n个%(%)条目

Dpilwal

我们是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基于每个组中某些元素的百分比。

a_horse_with_no_name

要基于每个组中行数的百分比来检索行,可以使用两个窗口函数:一个对行进行计数,而另一个给它们赋予唯一编号。

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几乎总是一个坏主意,因为它是固定长度的数据类型,被填充为定义的长度。我希望您只是为了设置示例而已,不要在实际表中使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PowerShell从每个组中选择前5个项目

来自分类Dev

从pandas groupby中的每个组中选择前n个元素

来自分类Dev

从pandas groupby中的每个组中选择前n个元素

来自分类Dev

从每个组中选择前n条记录

来自分类Dev

在EntityFramework中的每个组中选择前n行

来自分类Dev

在EntityFramework中的每个组中选择前n行

来自分类Dev

在每个类别中选择前2行

来自分类Dev

选择每个类别中最常购买的前 N 个项目

来自分类Dev

从每个组中选择1个

来自分类Dev

从MYSQL的每个组中选择N行

来自分类Dev

从每个组中选择

来自分类Dev

太好了 如何从组中选择N个主机

来自分类Dev

VBA:从每个类别中提取前'x'个条目

来自分类Dev

如何在MySQL中选择一个才能为每个“类别”获得5条记录?

来自分类Dev

在表格的每个组中选择排名前三的最高数字

来自分类Dev

从每个组中选择前15条记录

来自分类Dev

在表格的每个组中选择排名前三的最高数字

来自分类Dev

c#Linq-从每个组中选择前2名

来自分类Dev

如何在XPath中选择前n个元素

来自分类Dev

如何从JavaPairRDD中选择前N个元素?-Apache Spark

来自分类Dev

smalltalk:如何从集合中选择前n个项目

来自分类Dev

从组中选择最低的n个值

来自分类Dev

在分组数据框中选择每个组的第n个元素

来自分类Dev

在分组数据框中选择每个组的第n个元素

来自分类Dev

如何在R中的每个组中选择“ x”个最新值?

来自分类Dev

如何使单选按钮只能在每个组中选择1个选项?

来自分类Dev

Foxpro查询以从每个组中选择一个记录

来自分类Dev

如何从Pandas DataFrame中的每个组中选择具有最高值的N行

来自分类Dev

如何在PostgreSQL中选择具有更大价值的条目

Related 相关文章

热门标签

归档