查看完整版本: SQL語法-列出群組後的前幾筆
頁: [1]

ylchang5 發表於 2012-6-10 09:14 PM

SQL語法-列出群組後的前幾筆

本帖最後由 ylchang5 於 2012-6-11 12:18 PM 編輯

請教高手大大,如何使用SQL語法寫出以下要求?(只顯示出以下粗體字的資料)

列出每個計畫總薪水最高之三位正職員工 註:正職(Time=100)
資料表結構如下:
EMPLOYEE_PROJECT(CID, Project, Position, Time, Salary_level)

project     cid   salary_level=========================1          10      605001          5       320001          2       300001            3 250002          9       900002          11      780002          7       700002            19        690002            8 600002            18        456783          20      1290003          16      50003          17      30003            12        20003            13        1000
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

cusoxi 發表於 2012-7-13 09:43 PM

本帖最後由 cusoxi 於 2012-7-13 09:50 PM 編輯

以Oracle SQL的寫法,利用Rank()取得各專案下的薪資排名,再取各專案的前三名即可。

SELECT RR, PROJECT, CID, SALARY_LEVEL
  FROM (SELECT Rank() OVER (PARTITION BY PROJECT ORDER BY SALARY_LEVEL Desc) RR,
              PROJECT, CID, SALARY_LEVEL
          FROM EMPLOYEE_PROJECT
        )
  WHERE RR<=3
  ORDER BY PROJECT, RR
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]