2010年4月27日 星期二

Oracle 取排行榜

WITH qa AS
     (SELECT '國文' cid, 60 ca, TRUNC (SYSDATE) cb
        FROM DUAL
      UNION
      SELECT '國文' cid, 100 ca, TRUNC (SYSDATE) + 1 cb
        FROM DUAL
      UNION
      SELECT '國文' cid, 60 ca, TRUNC (SYSDATE) + 3 cb
        FROM DUAL
      UNION
      SELECT '國文' cid, 100 ca, TRUNC (SYSDATE) + 3 cb
        FROM DUAL
      UNION
      SELECT '數學' cid, 40 ca, TRUNC (SYSDATE) + 3 cb
        FROM DUAL
      UNION
      SELECT '數學' cid, 70 ca, TRUNC (SYSDATE) + 2 cb
        FROM DUAL
      UNION
      SELECT '數學' cid, 90 ca, TRUNC (SYSDATE) + 3 cb
        FROM DUAL
        UNION
      SELECT '數學' cid, NULL ca, TRUNC (SYSDATE) + 3 cb
        FROM DUAL),
     qb AS
     (SELECT DENSE_RANK () OVER (PARTITION BY cid ORDER BY ca DESC  NULLS LAST) AS dense_rank_top,
             RANK () OVER (PARTITION BY cid ORDER BY ca DESC  NULLS LAST) AS rank_top,
             MAX(CA) KEEP (DENSE_RANK LAST ORDER BY CA  NULLS LAST) OVER (PARTITION BY CID) "Highest" ,
             MIN(ca) KEEP (DENSE_RANK FIRST ORDER BY ca  NULLS LAST) OVER (PARTITION BY cid) "Lowest",qa.*
        FROM qa)
SELECT *
  FROM qb



DENSE_RANK_TOP RANK_TOP Highest Lowest CID CA CB
1 1 100 60 國文 100 2010/4/29
1 1 100 60 國文 100 2010/5/1
2 3 100 60 國文 60 2010/4/28
2 3 100 60 國文 60 2010/5/1
1 1 40 數學 90 2010/5/1
2 2 40 數學 70 2010/4/30
3 3 40 數學 40 2010/5/1
4 4 40 數學 2010/5/1

同行資料列欄位取最大值與最小值

GREATEST ( expr_list )
LEAST ( expr_list ) 




SQL> select LEAST(1,2,3,5,4,7,6) from dual;
 
LEAST(1,2,3,5,4,7,6)
--------------------




SQL> select GREATEST(1,10,3,5,5,1,6) from dual;
 
GREATEST(1,10,3,5,5,1,6)
------------------------
                      10

2010年2月22日 星期一

中華郵政考試

http://www.tabf.org.tw/tw/ptc_Post/bothistory.asp
 
 
file:///D:/Jim/Downloads/Post_1.doc
考古題
一、為服務應試人員,特彙整96年及97年郵政從業人員甄試同類科筆試科目試題及選擇題解答,僅供參考(如因法規修訂致試題不適用或解答有誤時,請自行更正)。
二、99年甄試各職階題型如下:(詳請參閱簡章第11頁)
(一)營運職及專業職(一),普通科目為單選題,專業科目為非選擇題。(註:非選擇題題型依各專業類科科目性質而定,包括申論題、問(簡)答題、填充題、計算題、圖表實作等)
(二)專業職(二)普通科目及專業科目均為單選題。 
 
96年試題與解答  97年試題與解答
欲閱讀PDF版本請下載安裝Adobe Reader 8
中華郵政公司99年從業人員甄試 您是第 00634700 位訪客

Oracle 9 xmlagg() 函數將多筆資料合併在同一列上


WITH qa AS
     (SELECT 'Row1' drow, 'user1' emp, 100 num  FROM DUAL
      UNION ALL
      SELECT 'Row2' drow, 'user1' emp, 90 num   FROM DUAL
      UNION ALL
      SELECT 'Row3' drow, 'user1' emp, 80 num   FROM DUAL)
SELECT   emp,
         RTRIM (XMLAGG (XMLELEMENT ("User", num || ',') order by num ).EXTRACT ('//text()'),',') combine
    FROM qa
GROUP BY emp;