2013-05-10 75 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

相关问题