Postgresql查询每组的前N条记录

表结构如下,

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.                Table "ytt.t1"  
  2.  Column |         Type          | Modifiers   
  3. --------+-----------------------+-----------  
  4.  i_name | character varying(10) | not null  
  5.  rank   | integer               | not null  
我模拟了20条数据来做演示。
[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. t_girl=# select * from t1 order by i_name;                               
  2.  i_name  | rank   
  3. ---------+------  
  4.  Charlie |   12  
  5.  Charlie |   12  
  6.  Charlie |   13  
  7.  Charlie |   10  
  8.  Charlie |   11  
  9.  Lily       |    6  
  10.  Lily       |    7  
  11.  Lily        |    7  
  12.  Lily       |    6  
  13.  Lily       |    5  
  14.  Lily    |    7  
  15.  Lily    |    4  
  16.  Lucy    |    1  
  17.  Lucy    |    2  
  18.  Lucy    |    2  
  19.  Ytt     |   14  
  20.  Ytt     |   15  
  21.  Ytt     |   14  
  22.  Ytt     |   14  
  23.  Ytt     |   15  
  24. (20 rows)  
.一、按照人名分组,每组取3条记录:

select * 
from (select i_name, rank, row_number() over(partition by i_name) as row from t1) t
where row < =3


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值