Mysql 在学生群体中平均分配分数

Mysql 在学生群体中平均分配分数,mysql,Mysql,我有一个特定学校学生的数据库 student_name |math | science| english| social --------------------------------------------- Aakas | 80 | 70 | 90 | 55 Aphi | 30 | 80 | 67 | 79 Geeta | 60 | 89 | 95 | 87 pradip

我有一个特定学校学生的数据库

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 
学生的数字n是1000

我需要做的事情是将学生分成“m”组(例如m是250)。这样,一组中的每个受试者都应该有接近平均的分数。对于上述学生,仅考虑数学的平均数学成绩为59分(对于给定的六名学生)。如果我们把六个学生分成两组,每组有三个学生。第一组=
{Aakas,Abhi,Geeta}
第二组=
{Pradip,Nikita,Shanti}

第1组的数学平均
56.67
接近
59
第2组的数学平均
61.33
接近
59


仅考虑数学,情况就是如此。我们必须考虑所有科目,每个小组的平均分数接近整个学生的个别科目的平均值。如何解决它?

数据库表不是电子表格

无论您认为要解决的是什么问题,第一步都是将您的模式规范化为更类似于以下内容的内容:

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

这是一个简单的聚类问题,你可以使用K-Means

你能显示你需要的输出格式吗?这看起来更像是一个电子表格,而不是任何类型的关系数据库对象。输出应该是这样的:group1={Aakas,Abhi,Geeta}group2={Pradip,Nikita,Shanti}因此,我需要划分整个学生组,每个组成员很少(在本例中为3),记住整个组在所有主题步骤中的分数应该几乎相等:1.首先为我的案例创建初始组,我创建组1={Aakas,Aphi,Geeta}组2={pradip,Nikita,Shanti}等。然后我计算每个受试者的平均值。数学平均,科学平均,英语平均,社交平均。使用欧几里德距离计算从组1到平均分数的距离,以及从组2到平均分数的类似距离。现在我交换group1和group2中的每个元组,例如,如果我交换Aakas和pradip,那么eulidean距离总平均值和新组的距离如果最小,那么取新组,否则在交换之前取组。但是上述方法不起作用。