2013-05-10 66 views
2

我有一張表(Employee)。根據單個列返回唯一行

員工

ID Name Salary Department 
------------------------------ 
1 Steve 10000 SQ 
2 Buck 15000 AS 
3 Dan 10000 SQ 
4 Dave 10000 AS 
5 Jack 30000 AS 
6 Amy 8000 GM 

我需要爲每個部門的每一個回報員工。例如,對於上述日期我需要返回的數據如下:

ID Name Salary Department 
------------------------------ 
1 Steve 10000 SQ (I can either return Steve or Dan for this group SQ) 
2 Buck 15000 AS (I can either return Buck or Dave or Jack for this group AS) 
6 Amy 8000 GM 
+0

爲什麼你想要返回一個隨機的員工? – Ben 2013-05-10 21:10:13

回答

5

這是一個很好用的row_number()

select id, name, salary, department 
from (select t.*, 
      row_number() over (partition by department order by department) as seqnum 
     from t 
    ) t 
where seqnum = 1 

如果你想第一個或最後一個ID,使用order by id ascorder by id descrow_number()分區子句中。如果你想要一個隨機的行,使用order by dbms_random.value

+0

非常感謝Gordon。 – user2371505 2013-05-10 21:24:17

相關問題