用一条SQL查询Top5与其它的总和

比如表

name count
A 10
B 5
C 20
D 60
E 80
F 2
G 7
H 3

共8条记录

name保证唯一

现在要查询count的TOP5,以及剩下3条的总和:

name count
E 80
D 60
C 20
A 10
G 7

其它 10

MySQL

select * from (select * from 比如表 order bycountdesc limit 5) t union all select '其它',sum(count) from 比如表 where name not in (select name from 比如表 order bycountdesc limit 5)

Oracle 不支持 TOP 关键字:不过这个好像并不十分严重,因为它提供了 rownum 这个隐式游标,可以实现与 TOP 类似的功能,如:
SELECT TOP 10 ... FROM WHERE ...
要写成
SELECT ... FROM ... WHERE ... AND rownum <= 10

oracle分页

-- 不能对ROWNUM使用>(大于1的数值)、>=(大于或等于1的数值)、=(大于或等于1的数值),否则无结果
-- 所以直接用只能从1开始
-- rownum >10 没有记录,因为第一条不满足去掉的话,第二条的rownum又成了1,所以永远没有满足条件的记录。
select * from student where rownum>=1;

--如果想要用rownum不从1开始,需按下面方法使用
select a1.* from (select student.*,rownum rn from student) a1 where rn >5;

--分页查询一
select * from (select a1.*,rownum rn from (select * from student) a1 where rownum <=5) where rn>=2;

--分页查询二
select a1.* from (select student.*,rownum rn from student where rownum <=5) a1 where rn >=3;

--分页查询三
select a1.* from (select student.*,rownum rn from student) a1 where rn between 3 and 5;

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,382评论 0赞 7
  • 50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna...
    最美的太阳WW阅读 3,511评论 0赞 23
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,378评论 18赞 399
  • 今天一个好朋友突然说好喜欢我的这个名字“椰子姑娘”。一刹那间,我觉得既然是个名字,既然自己这么喜欢,就该有个寓意吧...
    004750a314ae阅读 1,229评论 2赞 1
  • 一夜溪声入梦清 一叶勃发而又春 小南风悠悠而吹 花叶齐舒 虫鸣初起 隔着晨露 满眼澄清 稠丽的生命 在无限的春风里...
    夏天里的飞天喵阅读 375评论 0赞 3

友情链接更多精彩内容