sql 前十名

ghostr_ider_lsj 2011-05-12 12:18:37
oracle sql如何获取班级成绩前十的,可能出现有排名相同的情况,比如第二名有两个,第三名有四个这样的情况;
table_name: student;
column: id 标识
score 分数
...全文
464 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostr_ider_lsj 2011-06-10
  • 打赏
  • 举报
回复
谢谢各位,问题已解决,我是按8楼得那种方法。
tiantina 2011-05-13
  • 打赏
  • 举报
回复
select rownum,ename,sal from (select * from emp order by sal desc) where rownum<=10;
Sunkien 2011-05-13
  • 打赏
  • 举报
回复
1、按分数distinct一下,找出第十名分数,再找出大于这个分数的人
liuyyuns 2011-05-12
  • 打赏
  • 举报
回复
select id,score from(select id,score,rownum n from student order by core desc) where n <=10;
liuyyuns 2011-05-12
  • 打赏
  • 举报
回复
你是想查询前十名同学(只有10个),还是想查询前十名的同学(有可能大于10)
304的的哥 2011-05-12
  • 打赏
  • 举报
回复


SQL> with t as(
2 select '21001' id,'杨过' sname,'Oracle' c_name,90 score from dual union all
3 select '20110','张三丰','Oracle',90 from dual union all
4 select '12350','王五','Oracle',88 from dual union all
5 select '14010','李想','Oracle',69 from dual union all
6 select '10012','赵六','C++',87 from dual)
7 select id,sname,c_name,
8 rank() over (partition by c_name order by score desc) rank_1,
9 dense_rank() over (partition by c_name order by score desc) rank_2
10 from t
11 where c_name='Oracle'
12 /

ID SNAME C_NAME RANK_1 RANK_2
----- ------ ------ ---------- ----------
21001 杨过 Oracle 1 1
20110 张三丰 Oracle 1 1
12350 王五 Oracle 3 2
14010 李想 Oracle 4 3
/*
下面的两个函数都能排序,但是有点差别:
rank():出现排名相同的时候,就将排名中的位置留下来
dense_rank():它不将相同位置的名额留下来,而是在下一个排名时使用,
从上面的实例中我们已经看出来了
*/
tangren 2011-05-12
  • 打赏
  • 举报
回复
SELECT *
FROM (SELECT id, scroe, dense_rank() over(ORDER BY score) rn FROM student)
WHERE rn <= 10;
hebo2005 2011-05-12
  • 打赏
  • 举报
回复
用分析函数
row_number() over (
partition by 分组条件 order by 排序条件
) 没有并列,顺序排列
rank 有并列,并跳过下一排名,例如有2个并列第一,下面就是第三名
dense_rank 有并列并且不跳过下一排名,如两个第一,第二有3个,就会显示2个1,3个有2
有关分析函数用法,搜索下
delphisanding1 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuyyuns 的回复:]
select id,score from(select id,score,rownum n from student order by core desc) where n <=10;
[/Quote]

要给你的视图加个别名
jimmylin040 2011-05-12
  • 打赏
  • 举报
回复

select sum(1) over(order by score desc) seq,
code,score
from
(
select '1001' as code,80 as score
from dual
union all
select '1002',81
from dual
union all
select '1003',79
from dual
union all
select '1004',80
from dual
union all
select '1005',95
from dual
union all
select '1006',84
from dual
union all
select '1007',56
from dual
union all
select '1008',95
from dual
union all
select '1009',90
from dual
union all
select '1010',75
from dual
union all
select '1011',60
from dual
union all
select '1012',74
from dual
union all
select '1013',81
from dual
)
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

1,617

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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