У меня есть следующие структуры таблиц:
StudentId TestName TestScore
1 A 65
1 B 65
1 C 65
2 C 65
2 D 65
3 D 65
3 B 65
4 C 65
4 B 65
4 D 65
Что мне нужно сделать, так это вытащить наиболее распространенные комбинации TestNames среди всех студентов, сдавших не менее 3 тестов. Итак, в этом случае наиболее распространенными комбинациями будут:
TestCombination Frequency
BC 2 students (student 1,4)
Вы заметите, что BD также имеет частоту 2, но поскольку студент 3 сдал всего 2 теста, его оценки не делать вклад. Однако, если бы порог составлял 2 теста, то ожидаемый результат был бы следующим:
TestCombination Frequency
BC 2 students (student 1,4)
BD 2 students (student 3,4)
CD 2 Students (student 2,4)
Есть 38 тестов, поэтому просто выполнение комбинаций не вариант, и не все комбинации существуют.
Вне фильтрации студентов по количеству уникальных записей TestName. Я не знаю, как лучше всего двигаться вперед, но при этом эффективно. И я надеюсь, что это не проблема P vs NP.
Есть расширение этого, которое находит всех учеников, которые приняли данную комбинацию. Итак, если бы у меня была комбинация
CB, то возврат был бы
TestCombination Student
CB 1
CB 4