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

各部門ごとに 1 人の従業員を返す必要があります。たとえば、上記の日付の場合、次のようにデータを返す必要があります。

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
4

1 に答える 1

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 ascorを使用します。ランダムな行が必要な場合は、 を使用します。order by id descrow_number()order by dbms_random.value

于 2013-05-10T21:08:39.863 に答える