我的java天地

          oracle中各分析函數(shù)詳解

          今天心血來潮對(duì)oracle中的分析函數(shù)進(jìn)行備份
          1.row_number

          SQL> select ename,sal,deptno,row_number() over(partition by deptno order by sal) c from scott.emp;

          ENAME??????????? SAL DEPTNO????????? C
          ---------- --------- ------ ----------
          MILLER?????? 1300.00???? 10????????? 1
          CLARK??????? 2450.00???? 10????????? 2
          KING???????? 5000.00???? 10????????? 3
          SMITH???????? 800.00???? 20????????? 1
          ADAMS??????? 1100.00???? 20????????? 2
          JONES??????? 2975.00???? 20????????? 3
          SCOTT??????? 3000.00???? 20????????? 4
          FORD???????? 3000.00???? 20????????? 5
          JAMES???????? 950.00???? 30????????? 1
          MARTIN?????? 1250.00???? 30????????? 2
          WARD???????? 1250.00???? 30????????? 3
          TURNER?????? 1500.00???? 30????????? 4
          ALLEN??????? 1600.00???? 30????????? 5
          BLAKE??????? 2850.00???? 30????????? 6

          以部門id分組,以sal進(jìn)行排序。每組的序值是不間斷,而且是順序增長(zhǎng)

          2.rank

          SQL> select ename,sal,deptno,rank() over(partition by deptno order by sal) c from scott.emp;

          ENAME??????????? SAL DEPTNO????????? C
          ---------- --------- ------ ----------
          MILLER?????? 1300.00???? 10????????? 1
          CLARK??????? 2450.00???? 10????????? 2
          KING???????? 5000.00???? 10????????? 3
          SMITH???????? 800.00???? 20????????? 1
          ADAMS??????? 1100.00???? 20????????? 2
          JONES??????? 2975.00???? 20????????? 3
          SCOTT??????? 3000.00???? 20????????? 4
          FORD???????? 3000.00???? 20????????? 4
          JAMES???????? 950.00???? 30????????? 1
          MARTIN?????? 1250.00???? 30????????? 2
          WARD???????? 1250.00???? 30????????? 2
          TURNER?????? 1500.00???? 30????????? 4
          ALLEN??????? 1600.00???? 30????????? 5
          BLAKE??????? 2850.00???? 30????????? 6

          14 rows selected

          分析出的結(jié)果是跳躍的,如有2個(gè)2則下一個(gè)是4

          3.Dense_rank()

          SQL> select ename,sal,deptno,Dense_rank() over(partition by deptno order by sal) c from scott.emp;

          ENAME??????????? SAL DEPTNO????????? C
          ---------- --------- ------ ----------
          MILLER?????? 1300.00???? 10????????? 1
          CLARK??????? 2450.00???? 10????????? 2
          KING???????? 5000.00???? 10????????? 3
          SMITH???????? 800.00???? 20????????? 1
          ADAMS??????? 1100.00???? 20????????? 2
          JONES??????? 2975.00???? 20????????? 3
          SCOTT??????? 3000.00???? 20????????? 4
          FORD???????? 3000.00???? 20????????? 4
          JAMES???????? 950.00???? 30????????? 1
          MARTIN?????? 1250.00???? 30????????? 2
          WARD???????? 1250.00???? 30????????? 2
          TURNER?????? 1500.00???? 30????????? 3
          ALLEN??????? 1600.00???? 30????????? 4
          BLAKE??????? 2850.00???? 30????????? 5

          14 rows selected

          分析出的結(jié)時(shí)有重復(fù)的,與上面的區(qū)別是。重復(fù)后面的分析結(jié)果還是順序增長(zhǎng)

          4.刪掉數(shù)據(jù)庫(kù)中重復(fù)的記錄

          delete from b a where a.rowid <>(select max(b.rowid) from b b where a.a=b.a) ;

          思想為rowid是不可能重復(fù)的,不等于max一個(gè)的話,就有一個(gè)等于數(shù)據(jù)被刪掉

          posted on 2009-04-13 21:01 tobyxiong 閱讀(225) 評(píng)論(0)  編輯  收藏 所屬分類: DATABASES

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊(cè)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 湖南省| 丹阳市| 阿拉尔市| 丁青县| 辽宁省| 太康县| 井冈山市| 漳平市| 逊克县| 彭水| 祥云县| 德阳市| 常熟市| 长治县| 霍城县| 林芝县| 佳木斯市| 江川县| 长春市| 丹寨县| 涞水县| 孝昌县| 武定县| 漾濞| 灵丘县| 宁国市| 从化市| 始兴县| 阳新县| 淮阳县| 鱼台县| 梁平县| 长葛市| 罗定市| 遂平县| 沙湾县| 抚州市| 疏附县| 盐边县| 孝义市| 扎囊县|