用户名:急用急用急用用
逻辑很简单,但是看下解析之后还是很明白的。Q2。在oracle中有来自一**表exam_result(成绩记录表),表中的一条记录描述了“某个班某个学生某次**的成绩"createtableEXAM_RESULT(ID**MBER(问答10)not**ll,--界名圆士条但主键CLASSID**MBER(10)not**ll,--班级id,关查斗机苗比的或这律联到班级表U**RID**MBER(10)not**ll,--用户id,关联到用户表EXAMID**MB尽坚革少ER(10)not**ll,--试卷id满济京值谁,关联到试卷表RESULT**MBER(3)--成绩select*from(selec确月路直武针到te.classid,e.userid,e.examid,e.result,row_**mber()over(pa居础超判rtitionbye.examidorderbye.examid,e.res了适四张司我病检货ultdesc)rnf看短romexam_resultewheree.exam始酸日防孙刻属序胞罗idin(1,2,3))wherern<=3row_**mber()ov设线雨素er的函数是将按e.examid分组,再按e.examid降序排列。这两个字段当然可以不一样。。这个函宗能否倒精还陆酒格夫数与now**m的功能差不多,区别在于:使用row**货延血翻架预求磁师季m进行排序的时候是先对结果集加欢等粮立搞胜金排低还入伪列row**m然后流边死再进行排序,而此函数在包含排序从句后是先排序再计算行号码.另外几下函数:rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_口段终阿分项限**mber是没有重复值的.lag(arg1,米处且题金arg2,arg3):arg垂居重千与木1是从其他行返回的表达式arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,驶个往回检索以前的行的数目。arg3是在arg2表示的数目超出了分组的范围时返回的值。使用的方法与row_**mber()是一样的。(参考)