db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over()

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 07:36:37
db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over()
xO@%&dK {mIıia|lB6-D@@h8$ 3kW^/Vmt{ww}zƳԓhrz2HSV) SDB>_֊bGjxi3NC aSb@Uі>Wkf|%ҙ6{˭Yp- smuWC|n@JdDO'1k@G#!ͽ0 ᥑHh$7 |tS=ǯF^Z*O FRU qe)WPPr.RTNq\%8.Ao!  q etU\<@~e<A\'R\;`MhDF˾H 2l z%+s0 hЯC_Ux(p M|zj{A>޶8ݺiѶunm몍F/1AG`8d6l 0ȳThG'u N/Q`Q`7ۨ(ZD:omhc*hF]4FΚnC5hcDeQE[XQulGv.frR~풷_a0j8$otvc-2Rat ;w &ha2&4h_m㗪u3(DL;ʾ)pQ %M䝆;Òy>iyA_;WiuAi}AieށG :83Xr~

db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over()
db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over()

db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over()

db2的row_number()over() 等于oracle的row_number()over()


也就是顺序排列, 1,2,3,4,5,6,7



rank()over()  是排名不连续  也就是 数据有可能是 : 1,1,3,3,5,6,7 这样的.



下面是一个例子:

测试表/数据


CREATE TABLE test_course (
  student_name  VARCHAR(10),  -- 学生
  course_name   VARCHAR(10),  -- 课程
  grade         INT           -- 成绩
);


INSERT INTO test_course VALUES('甲', '语文', 95);
INSERT INTO test_course VALUES('乙', '语文', 85);
INSERT INTO test_course VALUES('丙', '语文', 75);
INSERT INTO test_course VALUES('丁', '语文', 65);
INSERT INTO test_course VALUES('戊', '语文', 55);
INSERT INTO test_course VALUES('己', '语文', 50);
INSERT INTO test_course VALUES('庚', '语文', 60);
INSERT INTO test_course VALUES('辛', '语文', 70);
INSERT INTO test_course VALUES('壬', '语文', 80);
INSERT INTO test_course VALUES('奎', '语文', 90);

INSERT INTO test_course VALUES('甲', '数学', 90);
INSERT INTO test_course VALUES('乙', '数学', 80);
INSERT INTO test_course VALUES('丙', '数学', 70);
INSERT INTO test_course VALUES('丁', '数学', 60);
INSERT INTO test_course VALUES('戊', '数学', 50);
INSERT INTO test_course VALUES('己', '数学', 50);
INSERT INTO test_course VALUES('庚', '数学', 60);
INSERT INTO test_course VALUES('辛', '数学', 70);
INSERT INTO test_course VALUES('壬', '数学', 85);
INSERT INTO test_course VALUES('奎', '数学', 95);


ROW_NUMBER 顺序编号 

SQL> SELECT
  2    ROW_NUMBER() OVER( ORDER BY SUM(grade) DESC) AS NO,
  3    student_name,
  4    SUM(grade) AS AllGrade
  5  FROM
  6    test_course
  7  GROUP BY
  8    student_name
  9  ORDER BY
 10    SUM(grade) DESC
 11  ;

        NO STUDENT_NA   ALLGRADE
---------- ---------- ----------
         1 奎                185
         2 甲                185
         3 乙                165
         4 壬                165
         5 丙                145
         6 辛                140
         7 丁                125
         8 庚                120
         9 戊                105
        10 己                100

已选择10行.


RANK 排名不连续 

SELECT
  RANK() OVER( ORDER BY SUM(grade) DESC) AS NO,
  student_name,
  SUM(grade) AS AllGrade
FROM
  test_course
GROUP BY
  student_name
ORDER BY
  SUM(grade) DESC

        NO STUDENT_NA   ALLGRADE
---------- ---------- ----------
         1 奎                185
         1 甲                185
         3 乙                165
         3 壬                165
         5 丙                145
         6 辛                140
         7 丁                125
         8 庚                120
         9 戊                105
        10 己                100

已选择10行.



还有一个  

DENSE_RANK 排名连续 

SELECT
  DENSE_RANK() OVER( ORDER BY SUM(grade) DESC) AS NO,
  student_name,
  SUM(grade) AS AllGrade
FROM
  test_course
GROUP BY
  student_name
ORDER BY
  SUM(grade) DESC

        NO STUDENT_NA   ALLGRADE
---------- ---------- ----------
         1 奎                185
         1 甲                185
         2 乙                165
         2 壬                165
         3 丙                145
         4 辛                140
         5 丁                125
         6 庚                120
         7 戊                105
         8 己                100

已选择10行.

db2的row_number()over() 等于oracle的row_number()over() 还是等于oracle的rank()over() 谁知道db2 版本 db2/390 db2/400 和db2 9.5的 怎么划分的 DB2 9.7与 DB2 9.8的最大差别是什么? row_number() over (partition by name,kecheng,score order by rowid) 这个该怎么理解:row_number() over(partition by name,kecheng,score 这句select row_number() over (order by ProductID asc) as RowIndex,select row_number() over (order by ProductID asc) as RowIndex,p.ProductID,p.ProductName,p.CategoryID,p.Unit,p.UnitPrice,p.Quantity from Products as p where CategoryID = @CategoryID; ROW_NUMBER() OVER 函数的括号一直报错为什么括号一直报错?别人写的时候都没有问题,我无论怎么改都是报1064错误,就要疯死了,着急等.pid是主键,state是一个状态,也是int类型的. DB2 中如何将date类型的转换成timestamp DB2 Catalog 与 Schema这篇文章中关于 DB2 Schema和Catalog的描述,最好举个例子谢谢! db2 -td@ -f DC_FUNC_LASTRUN.sql > DC_FUNC_LASTRUN.db2 -td@ -f DC_FUNC_LASTRUN.sql > DC_FUNC_LASTRUN.log是某个*.sh脚本文件,其中DC_FUNC_LASTRUN.sql 是一个数据库脚本.请主要说明一下db2 -td@ -f参数的意思, sql语句,求大神看看我这句话哪里有错!select * from ( select FUNCTIONAL_LOCATION,HDR_END_DATE,row_number()over(partition by FUNCTIONAL_LOCATION order by HDR_END_DATE ) mm from T_EODB_CONTRACT_ITM_DEL) where mm=1; DB2数据库有Schema 或 Catalog 这样的概念吗?有的话麻烦举个例子解释下. 若D是三角形ABC内的一点,且AB2-AC2=DB2-DC2,求证AD垂直于DC (此乃向量题) db2 -td@ -f DC_FUNC_LASTRUN.sql > DC_FUNC_LASTRUN. 若d是△abc内的一点,且ab2-ac2=db2-dc2,求证ad⊥bc若D是三角形ABC内的一点,且AB2-AC2=DB2-DC2,求证AD垂直于DC (此乃向量题) look over和go over的区别 over there中over的词性是什么 over and over againNelly的一首老歌了. watch over和look over的区别?