次のフィールドを持つt1という名前のテーブルがあります:ROWID、CID、PID、Score、SortKey
次のデータがあります。
1, C1, P1, 10, 1
2, C1, P2, 20, 2
3, C1, P3, 30, 3
4, C2, P4, 20, 3
5, C2, P5, 30, 2
6, C3, P6, 10, 1
7, C3, P7, 20, 2
CIDでgroupbyを適用するようにどのクエリを記述しますか。ただし、グループごとに1つの結果を返す代わりに、グループごとに最大2つの結果を返します。また、条件がスコア> = 20であり、結果をCIDとSortKeyで並べ替えたい場合。
上記のデータに対してクエリを実行する必要がある場合、次の結果が期待されます。
C1の結果-注:ROWID 1は、スコア<20とは見なされません。
C1, P2, 20, 2
C1, P3, 30, 3
C2の結果-注:ROWID 5の値が小さいため、ROWID5はROWID4の前に表示されますSortKey
C2, P5, 30, 2
C2, P4, 20, 3
C3の結果-注:ROWID 6は、スコアが20未満であるため表示されないため、ここに返されるレコードは1つだけです。
C3, P7, 20, 2
短期的には、GROUPBY内の制限が必要です。私は最も単純な解決策が必要であり、一時テーブルを避けたいと思っています。サブクエリは問題ありません。また、これにはSQLiteを使用していることに注意してください。