2013-05-10 5 views
2

У меня есть таблица (Сотрудник).Возвратите уникальный ряд, основанный на одном столбце

Сотрудник

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

ответ

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 

Если вы хотите, первый или последний идентификатор, используйте order by id asc или order by id desc в разделе о разделении row_number(). Если вам нужна случайная строка, используйте order by dbms_random.value.

+0

Большое спасибо Гордону. – user2371505

Смежные вопросы