を選択して私たちは、すべての質問が保存されている(QuestionBankという名前)のテーブルを持っている:すべてのパーティション内のレコードの指定した数のランダムパーティションのレコード
Id Topic Hardness Position
4 1 3 4
5 1 2 1
6 1 1 2
7 1 3 3
8 1 3 4
9 2 2 1
10 2 2 2
11 2 3 3
12 3 1 1
13 3 1 1
14 3 1 2
すべての質問には、トピックに属し、それは自身の硬さと位置だしました(その内容に基づいたすべての同様の質問は、対応するトピックで同じ位置にあります)。
[位置]列の値は無意味で、トピック内で同様の質問を区切ります。
目標は、ハーネス= 1のXレコードと硬度= 2のYレコードと硬度= ZのZレコードをランダムにN個選択することです。可能な限り同じようなトピックと位置を持つレコードが結果セットに返されるという制約があります。
たとえば、Id = 4とId = 8のレコードはトピックと位置が似ているため、そのうちの1つが結果セット内にあることが望まれます。
ありがとうございます@Martinはあなたのソリューションです。 私は昨日からそれに取り組み、完璧に動作します。 –
私は別の問題を抱えていました: トピックの硬度の代わりにレコードの数を制限しようとすると、解決策は何でしょうか? トピック= 1の3レコード、トピック= 2の4レコード、トピック= 3の2レコード(硬度= 1の例2レコードの代わりに) おかげさまで、ありがとうございました。 –