例: EMPLOYEE where state in ('NY','CA','TX'); から EMPLOYEENAME を選択します。
where 句の各値から 10 行、つまり各州から 10 個の名前を返す方法はありますか。
編集: Oracle DB を使用しています。
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;
select *
from
(
select foo,bar,
row_number() over(partition by baz) rn
from table
group by foo,bar
)
where rn <= 10
などの分析関数を使用するrow_number
と、いくつかの基準に基づいてパーティション化できます。rownum
これは基本的に、オラクルが割り当てる デフォルトをオーバーライドします。
同時実行性に関する懸念がある場合は、トランザクションに基づいて読み取りがロックされ、挿入/更新がブロック されないことを思い出してください。