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

답변

5

이 좋은 사용하는 것입니다 row_number()을 위해 : 예를 들어, 위의 날짜를 나는 다음과 같이 데이터를 반환해야 당신이 첫 번째 또는 마지막 ID를 원하는 경우

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 descrow_number() 분할 절에 있습니다. 임의의 행을 원하면 order by dbms_random.value을 사용하십시오.

+0

고든 고맙습니다. – user2371505

관련 문제