• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:X個グループからY個ずつデータを抽出したい)

X個グループからY個ずつデータを抽出する方法

このQ&Aのポイント
  • X個グループからY個ずつデータを抽出する方法について解説します。
  • 抽出したデータにフラグを立てて、次の抽出時に除外の条件として使うことができます。
  • データベースはSqlLiteを使用します。

質問者が選んだベストアンサー

  • ベストアンサー
  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.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に取っておいて、それに無いものを選ぶようにするとか。

yaoyao48
質問者

お礼

返事が遅くなって、すみませんでした。 今回のDBはSqliteなので、rank()は使えないようです。 でも他のDBならとても役に立つ答えと思います。 ありがとございました。

関連するQ&A