[SQL]如何找出一個資料表裡同一部門薪資最高的員工?(加入新的衍生資料表)

如何找出一個資料表裡同一部門薪資最高的員工?或是如何在同一資料表以相同的某個欄位尋找最新或最後的一筆資料。

假設我的資料如下: 

Employees(eno , name , dpno , salary) 

eno
name
dpno
salary
A001
A
D1
25
B001
B
D2
10
C001
C
D1
10
D001
D
D3
20
E001
E
D2
25
F001
F
D3
10
S001
S
D2
20

 

欲搜尋結果如下:

eno
name
dpno
salary
D001
D
D3
20
E001
E
D2
25
A001
A
D1
25

 

方法一:(這是我以前比較不會時,所用的方法)

主要是以子查詢的方式由外關聯到內,並由排序由大到小,再送出第一筆的主鍵給外面比對,條件符合即可。

此方法效能不佳。

 

方法二:(這是今天學到的)

與上述方法雷同,效能一樣不佳,但寫法較精簡。

 

方法三:(這是我覺得最棒的,感謝劉俞志老師的教導)

效能最佳,資料庫相關的書建議用法。
※剛剛查了一下,原來這個用方叫做(衍生資料表)20090615

另外,我用SQL2000所提供的北風資料庫的訂單資料表(Orders)也做一範例。

如果要尋找每位客戶最後一次下訂單的那筆資料,試以下語法(應該會有90筆資料):

不知是否還有其它寫法呢?

 


聰明人會抓住每一次機會,更聰明的人會不斷創造新機會。
每一秒都有千萬種可能,包括奇蹟!

技術永遠不是問題!

座右銘:有電腦的地方,就找得到我!!