1

例: EMPLOYEE where state in ('NY','CA','TX'); から EMPLOYEENAME を選択します。

where 句の各値から 10 行、つまり各州から 10 個の名前を返す方法はありますか。

編集: Oracle DB を使用しています。

4

2 に答える 2

7
 SELECT a.* FROM
 (
 select EMPLOYEENAME , 
 ROW_NUMBER() OVER(PARTITION BY state ORDER BY EMPLOYEENAME) as rn
 from EMPLOYEE where state in ('NY','CA','TX')
 )a WHERE rn <=10;
于 2012-12-31T17:58:38.860 に答える
2
select *  
from  
(  
    select foo,bar,  
    row_number() over(partition by baz)  rn     
    from table
    group by foo,bar
)  
where rn <= 10

などの分析関数を使用するrow_numberと、いくつかの基準に基づいてパーティション化できます。rownumこれは基本的に、オラクルが割り当てる デフォルトをオーバーライドします。

同時実行性に関する懸念がある場合は、トランザクションに基づいて読み取りがロックされ、挿入/更新がブロック されないことを思い出してください。

于 2012-12-31T17:55:41.030 に答える