大家都进来看一下.怎么取前5条(表里的多个单位各取前3条)

my1982 2011-07-06 04:11:23
表test里有单位A B C ,每个单位都有多条记录..取每个单位的前3条记录,怎么怎么取?
test表:
字段一
A
A
A
A
A
B
B
B
B
B
B
B
B
C
C
C

希望大家能帮我解决这个难题,小弟感激不尽!!



...全文
220 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
d604060189 2011-07-23
  • 打赏
  • 举报
回复
rownum 1
2
3
rank 1
2
2
4
dense_rank 1
2
2
3
可以写一个 试试啊
碎话慢谈 2011-07-20
  • 打赏
  • 举报
回复
分析函数就行
javamyself 2011-07-20
  • 打赏
  • 举报
回复
占楼学习
dai215shu 2011-07-19
  • 打赏
  • 举报
回复
学习
还是没明白row_number()和rank()的区别....
jimmylin040 2011-07-16
  • 打赏
  • 举报
回复
分析函数over (partition by)正解
cr75608859 2011-07-16
  • 打赏
  • 举报
回复
2楼+1
灰哥 2011-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 benchim888 的回复:]
SQL code

select a.*
from(
select t.*,rank() over(partition by t.depart_name order by t.depart_name) num
from test t) a
where a.num < 4
[/Quote]

这哥们的答案应该是对的,先用分析函数分组进行取每个类别进行排序,再取前3名。
zhouhaochen 2011-07-14
  • 打赏
  • 举报
回复
学习。。
l337955164 2011-07-13
  • 打赏
  • 举报
回复
恩,用rank貌似确实不行,如果相同的记录太多就会造成误差。。。还是用row_number吧
sn_tiantian 2011-07-11
  • 打赏
  • 举报
回复
rank()和row_number()稍有不同的。在有相同数据的时候不同,这个需要注意。
ChiChengIT 2011-07-11
  • 打赏
  • 举报
回复
select t1.*from(
select t.*,row_number() over(partition by t.depart_name order by t.depart_name) rownum
from test t) a
where t1.rownum <=3
zykaixin 2011-07-10
  • 打赏
  • 举报
回复
建议楼主查看一下rank() over的用法
文友一道 2011-07-08
  • 打赏
  • 举报
回复
2楼的有时候不行,1楼的都没问题
yuyeyi 2011-07-06
  • 打赏
  • 举报
回复
楼上都正确
my1982 2011-07-06
  • 打赏
  • 举报
回复
谢谢楼上的...测试已通过
BenChiM888 2011-07-06
  • 打赏
  • 举报
回复

select a.*
from(
select t.*,rank() over(partition by t.depart_name order by t.depart_name) num
from test t) a
where a.num < 4

horizonlyhw 2011-07-06
  • 打赏
  • 举报
回复

select a.*
from(
select t.*,row_number() over(partition by t.depart_name order by t.depart_name) num
from test t) a
where a.num < 4

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧