- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:X個グループからY個ずつデータを抽出したい)
X個グループからY個ずつデータを抽出する方法
このQ&Aのポイント
- X個グループからY個ずつデータを抽出する方法について解説します。
- 抽出したデータにフラグを立てて、次の抽出時に除外の条件として使うことができます。
- データベースはSqlLiteを使用します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「抽出したデータにフラグを立てて、次の抽出時に除外の条件として使います。」は、後回しにして、「グループごとに22個抜き出したい」は、次のように rank()を使って書けます。 元テーブルをTA、その主キーをK_Aとすると select * from (select rank() over (partition by grp order by K_A) as R, K_A,grp,name,flag from TA) as F where (F.R <= 22); 抜き出すグループは33個まで、という条件も加えるなら select * from (select rank() over (partition by grp order by K_A) as R, K_A,grp,name,flag from TA) as F inner join (select distinct grp from TA limit 33) as G using(grp) where (F.R <= 22); 「抽出したデータにフラグを立てて、次の抽出時に除外」は、temporary tableを作る権限があるなら、上記の抽出結果の主キーをtemp tableに取っておいて、それに無いものを選ぶようにするとか。
お礼
返事が遅くなって、すみませんでした。 今回のDBはSqliteなので、rank()は使えないようです。 でも他のDBならとても役に立つ答えと思います。 ありがとございました。