Oracle之PL/SQL有關查詢實現

來源:互聯網
上載者:User

最近有看到網上關於排序查詢的實現有兩個自己不常用的查詢文法,關於分析函數的用法,記之,鑒之,勉之;

在一個表裡怎麼查詢每列資料的最大值和次大值?

WITH tt        AS (SELECT CASE WHEN col1 IN (1, 2) THEN empno ELSE NULL END empno,                   CASE WHEN col2 IN (1, 2) THEN ename ELSE NULL END ename,                   CASE WHEN col3 IN (1, 2) THEN job ELSE NULL END job,                   CASE WHEN col4 IN (1, 2) THEN mgr ELSE NULL END mgr,                   CASE WHEN col5 IN (1, 2) THEN hiredate ELSE NULL END                      hiredate,                   CASE WHEN col6 IN (1, 2) THEN sal ELSE NULL END sal,                   CASE WHEN col7 IN (1, 2) THEN comm ELSE NULL END comm,                   CASE WHEN col8 IN (1, 2) THEN deptno ELSE NULL END deptno              FROM (SELECT empno,                           ROW_NUMBER () OVER (ORDER BY empno DESC) col1,                           ename,                           ROW_NUMBER () OVER (ORDER BY ename DESC) col2,                           job,                           ROW_NUMBER () OVER (ORDER BY job DESC) col3,                           mgr,                           ROW_NUMBER () OVER (ORDER BY mgr DESC) col4,                           hiredate,                           ROW_NUMBER () OVER (ORDER BY hiredate DESC) col5,                           sal,                           ROW_NUMBER () OVER (ORDER BY sal DESC) col6,                           comm,                           ROW_NUMBER () OVER (ORDER BY comm DESC) col7,                           deptno,                           ROW_NUMBER () OVER (ORDER BY deptno DESC) col8                      FROM emp))SELECT MAX (empno) empno,       MAX (ename) ename,       MAX (job) job,       MAX (mgr) mgr,       MAX (hiredate) hiredate,       MAX (sal) sal,       MAX (comm) comm,       MAX (deptno) deptno  FROM ttUNION ALLSELECT MIN (empno) empno,       MIN (ename) ename,       MIN (job) job,       MIN (mgr) mgr,       MIN (hiredate) hiredate,       MIN (sal) sal,       MIN (comm) comm,       MIN (deptno) deptno  FROM tt

對一張表中的資料做如下操作啊,先對資料進行分分組,再在組內進行排序,再顯示每組中的前兩行

select * from (select d.empno,       d.deptno,       sum(sal),       rank() over(partition by deptno order by sum(sal) desc) rank  from scott.emp d group by d.empno, d.deptno) where rank<3

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.