Oracle Rank() Over()

前端之家收集整理的这篇文章主要介绍了Oracle Rank() Over()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Rank()使用说明:

a. 函数简介:

返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。

b. 语法:

RANK() OVER([<partiton_by_clause>]<order by clause>)

c. 参数说明:

partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。

Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。

d. 以下是实例使用:

1. 创建测试表

sql代码
  1. --创建表
  2. --Createtable
  3. createtableT_score
  4. (
  5. AUTOIDNUMBERnotnull,
  6. S_IDNUMBER(3),
  7. S_NAMECHAR(8) SUB_NAMEVARCHAR2(20),250)"> scoreNUMBER(10,2)
  8. );
  9. --Addcommentstothetable
  10. commentonis'学生成绩表';
  11. --Addcommentstothecolumns
  12. columnT_score.AUTOID
  13. is'主键ID';
  14. columnT_score.S_ID
  15. is'学生ID';
  16. columnT_score.S_NAME
  17. is'学生姓名';
  18. columnT_score.SUB_NAME
  19. is'科目';
  20. columnT_score.score
  21. is'成绩';

2. 创建测试记录

insertintot_score(AUTOID,S_ID,S_NAME,SUB_NAME,score)

  • values(8,1,'张三','语文',80.00);
  • values(9,2,'李四','数学',85); font-size:14px; word-wrap:normal">values(10,0.00);
  • values(11,50.00);
  • values(12,3,'张三丰',10.00);
  • values(13,null);
  • values(14,'体育',120.00);
  • values(15,4,'杨过','JAVA',90.00);
  • values(16,5,'mike','c++',85); font-size:14px; word-wrap:normal">values(3,'Oracle',85); font-size:14px; word-wrap:normal">values(4,77.00);
  • values(17,77.00);
  • 3. 分不同情况查询

    3.1 查询所有的学生成

    --1.查询所有的学生成

  • selectt.s_id学号,t.s_name姓名,t.sub_name科目,t.score成绩
  • fromt_scoret;
  • 查询结果:

    学号 姓名 科目 成绩
    1 张三 语文 80.00
    2 李四 数学 0.00
    50.00
    3 张三丰 10.00
    体育 120.00
    4 杨过 JAVA 90.00
    5 mike c++ Oracle 77.00
    77.00

    3.2 查询Oracle科目成绩名次-非连续rank

    --2.查询Oracle科目成绩名次-非连续rank
  • t.s_name姓名,250)"> t.sub_name科目,250)"> t.score成绩,250)"> rank()over(orderbyscoredescnullslast)名次
  • fromt_scoret
  • wheret.sub_name='Oracle';
  • 查询结果:

    @H_33_502@ 科目
    学号 姓名 成绩 名次
    4 杨过 Oracle 77.00 1
    2 李四 3 张三丰 0.00 3

    3.3查询Oracle科目成绩名次-连续dense_rank

    --3.查询Oracle科目成绩名次-连续dense_rank
  • dense_rank()over( 查询结果:

    学号 姓名 科目 成绩 名次
    4 杨过 Oracle 77.00 1
    2 李四 3 张三丰 0.00 2

    3.4 查询各学生各科排名

    --4.查询各学生各科排名
  • dense_rank()over(partitionbyt.s_name

    学号 姓名 科目 成绩 名次
    5 mike c++ 80.00 1
    2 李四 数学 Oracle 77.00 2
    语文 50.00 3
    4 杨过 JAVA 90.00 1 张三 0.00 3 张三丰 体育 120.00 10.00 4

    3.5 查询各科名次(分区)

    --5.查询各科名次(分区)
  • byt.sub_name

    学号 姓名 成绩 名次
    4 杨过 JAVA 90.00 1
    77.00 2 李四 3 张三丰 0.00 2
    5 mike c++ 80.00 数学 1 张三 3
    体育 120.00 语文 50.00 10.00 来源: http://zhaisx.iteye.com/blog/774165  

    猜你在找的Oracle相关文章