不明白,你这样的数据有意义吗?
既然group by了,那么怎么才算那个分组的前三条,我任意去三条你怎么去判断他不算“前”三
既然group by了,那么怎么才算那个分组的前三条,我任意去三条你怎么去判断他不算“前”三
解决方案 »
- win7下安装oracle 11g r2 报错:此卷上用于所选 Oracle 主目录的磁盘空间不足
- WIN7旗舰版安装oracle10g 提示操作系统不符合要求
- 索引是什么,怎么建索引?有介绍这方面的好资料没?
- oracle中查询最多的数据的问题
- 请问高手:由817升级到9i怎么做?
- 关于两张表的同步
- 请教一SQL语句
- 急急急,SOS,ODBC问题,解决马上结贴
- 关于更改oracle默认编辑器的问题????
- 在TRIGGER中定义一个变量。类型和某个表的字段保持一致。怎么定义?
- 关于表的伪例问题?在开发中如何设置表的一个字段的值为当前行的行号?在线等。。。(不要通过游标)。。。
- 难!in 与not in问题!
select t.*,rank() over(partition by a,b,c order by col_num) rk from t) tb
where tb.rk<=3;
可以使用分析函数来处理,如果版本较低,好像处理起来就比较麻烦了.
select * from (
select t.*,rank() over(partition by a,b,c order by col_num) rk from t) tb
where tb.rk<=3;这条语句只能保证取出排名欠3名的用户, 如果有很多人并列前几名,这条语句就^_^如果确定只要前3挑记录, 可以考虑使用row_number 代替 rank来实现, 具体例子我就不举了.
select b.*,rank() over (partition a,b,c order by colname) rk from tab)
where rk<4;