English 中文(简体)
回返 B. 具有额外条件或特性的不同群体的基本结果
原标题:Return N results for different groups with additional condition oracle sql

我如何能够在一个分册中为几个团体取得N级成果。

例如见以下表格:

    ID  Team    Auditor
    1   Tm1     Jill
    2   Tm2     Jill
    3   Tm1     Jill
    4   Tm2     Jack
    5   Tm2     Jack
    6   Tm2     Jack
    7   Tm3     Sam
    8   Tm1     Sam
    9   Tm5     Sam

有更多的审计员和小组。 我愿尽可能为每个审计员配备3个小组。

我已经利用了以下结构(以回应这一询问:)。 每个小组(以Oracle)取得最高结果,将3个小组交还给每个审计员,但有时他们获得3个小组,这实际上并不理想(见Jack)。

select * 
  from (select ID, 
               Team, 
               Auditor, 
               rank() over ( partition by Auditor order by ID) rank 
          from table) 
 where rank <= 3;
最佳回答

Your test data does not cover the case that you explained.

你可以这样做:

select * 
from(
    select ID, 
           Team,
           Auditor,
           row_number() over (partition by Auditor order by rank1) as rank
      from (select ID, 
                   Team, 
                   Auditor, 
                   row_number() over (partition by Auditor, team order by id) rank1 
              from table) 
      )
where rank <= 3;

然而,由于你有两种情况,这样做将更加昂贵。

内部调查由1名审计师、小组、2名审计师组成。

中间询问将审计人排在内部级别之后,因此审计人将首先排在有不同团队的级别。

外部查询是每个审计员的第一行。

问题回答

暂无回答




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签