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距离总平均值和新组的距离如果最小,那么取新组,否则在交换之前取组。但是上述方法不起作用。