2015-08-22 2 views
-1

У меня есть база данных студентов определенной школы.Равное распределение меток в группе студентов

student_name |math | science| english| social 
--------------------------------------------- 
Aakas  | 80 | 70 | 90 | 55 
Aphi   | 30 | 80 | 67 | 79 
Geeta  | 60 | 89 | 95 | 87 
pradip  | 70 | 78 | 67 | 65 
Nikita  | 45 | 78 | 90 | 48 
Shanti  | 69 | 90 | 67 | 84 

Студенты числа п это сказать 1000.

Что мне нужно сделать, это разделить студентов на группы «М» (например, м составляет 250). Таким образом, каждый субъект группы должен иметь почти средние оценки. Для вышесказанного средние оценки математики - 59 (для шести учащихся) для рассмотрения только математики. Если мы разделим шесть студентов на две группы, каждая из которых будет содержать 3 студентов. Группа 1 = {Aakas, Абхи, Гита} группа 2 = {Прадип, Никита, Шанти}

Группа 1 имеет в среднем 56.67 в математике, которая находится рядом с 59 2-й группы имеет в среднем 61.33 в математике, которая находится рядом с 59

В этом случае учитывается только математика. Мы должны рассмотреть для всех предметов такие, что каждая группа имеет средние оценки, близкие к среднему значению индивидуального предмета для всех студентов. Как его решить?

+0

Пожалуйста, измените свой вопрос и предоставить образец данные и желаемые результаты. Не совсем понятно, что вы пытаетесь сделать. Например, вы просто пытаетесь поместить четыре столбца в квинтили? –

+0

1. Нормализовать данные. – Strawberry

ответ

0

Если у вас есть только один предмет и вы хотите, чтобы 2 ученика на группу, то вы бы связали самого высокого учащегося с самым низким счетом и вторым самым результативным учеником со вторым самым младшим учеником и так далее, чтобы получить набор группы, где среднее значение каждой пары будет близким к среднему значению всех учащихся.

Аналогичным образом, для 250 групп или 4 учащихся в группе вы можете оценивать каждого ученика по всем своим предметам и группировать учеников из 2-х ранжированных студентов с нижним ранжированием 2 учеников, а также учащихся 3-го и 4-го классов с нижним третьим и 4-й студент и так далее.

Ниже приведен запрос, который оценивает ваших студентов по их общей математике и научным оценкам. Вы можете адаптировать этот запрос для включения большего количества предметов.

http://sqlfiddle.com/#!9/a4667/1

select t1.student_name, math, science, math_rank.rn, science_rank.rn, 
math_rank.rn + science_rank.rn as total_rank, 
@group_number := if(@rn % 4 = 0, @group_number + 1, @group_number) group_number, 
@rn := (@rn + 1) 
from Table1 t1 
join (
    select stuadent_name, (@rn_math := @rn_math + 1) rn 
    from Table1 
    cross join (select @rn_math := 0) t2 
    order by math desc 
) math_rank on t1.student_name = math_rank.student_name 
join (
    select student_name, (@rn_science := @rn_science + 1) rn 
    from Table1 
    cross join (select @rn_science := 0) t2 
    order by science desc 
) science_rank on t1.student_name = science_rank.student_name 
cross join (select @group_number := 1, @rn := 1) t2 
order by total_rank 
Смежные вопросы