У нас есть таблица (с именем 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
Каждый вопрос относится к теме и имеет свою твердость и позицию (каждый аналогичный вопрос по содержанию имеет одинаковую позицию в соответствующей теме).
Обратите внимание, что значение в столбце Позиция не имеет смысла, и оно просто разделяет похожие вопросы в теме.
Цель состоит в том, чтобы случайным образом выбрать N записей с X записями Harness = 1 и Y записями Hardness = 2 и Z записями Hardness = 3 и т. Д .; с этим ограничением, что в результирующем наборе, насколько это возможно, нет записей с похожей темой и положением.
Например, записи с Id = 4 и Id = 8 одинаковы в обеих темах и позициях, поэтому желательно, чтобы одна из них была в наборе результатов.