想请教你一个PHP和MYSQL的问题!一定要回答我!很紧急!万分感谢!
我正在做一个教学管理系统的数理统计,想求方差,具体内容是:每个学生平均选几门课已知道,每个学生选了几门课是用selectdistinctstudent_id,count(...
我正在做一个教学管理系统的数理统计,想求方差,具体内容是:
每个学生平均选几门课已知道,每个学生选了几门课是用select distinct student_id,count(*) from 'student_course' group by 'student_id'统计出来的,求方差得用每个学生选课数减去平均值平方再除学生总数求得,这得用个while循环吧?可是每个学生选了几门课是用函数统计出来的,这个具体程序要怎么写? 展开
每个学生平均选几门课已知道,每个学生选了几门课是用select distinct student_id,count(*) from 'student_course' group by 'student_id'统计出来的,求方差得用每个学生选课数减去平均值平方再除学生总数求得,这得用个while循环吧?可是每个学生选了几门课是用函数统计出来的,这个具体程序要怎么写? 展开
1个回答
展开全部
没太搞明白你的意思。我数学中没怎么学统计..
是得用while循环操作。
SELECT DISTINCT sutdent_id AS sid, COUNT(*) AS cot FROM student_course GROUP BY `student_id`
这就可以得到两个值,学生ID和课程数量。你是不是要获取学生的课程数量呢?
上面这条语句用mysql_query查询,我假设变量为$query
$fetch = mysql_fetch_array($query);
$count = $fetch["cot"]; // 这个就是学生选课的数量了。
这样操作很麻烦,所以实际上我不会这么做.. 首先用
$query = mysql_query("SELECT DISTINCT student_id FROM student_course");
找出所有学生的ID,然后while循环
// 定义两个变量
$sum = 0; // 所有学生选课总数,为了计算平均值
$stus = 0; // 学生总数,同上,在while循环中算出
$scount = array(); // 建立一个数组,储存学生id对应到的选课数量
while( $student = mysql_fetch_array($query) ) {
$id = $student["student_id"];
$student_query = mysql_query("SELECT COUNT(*) AS count FROM student_course WHERE student_id = $id");
$fetch = mysql_fetch_array($student_query);
// 这里操作数组,在数据库操作的循环之后来使用
$stus++; // 增加一个学生数量
$sum += $fetch["count"]; // 增加选课总数
$scount[$id] = $fetch["count"]; // 学生ID对应到选课的数量
}
// 上面已经完成了所需要的数据,可以直接操作了.
$average = $sum / $stus; // 平均值
$square = 0; // 计算选课数 - 平均值 的平方
foreach( $scount as $value ) {
$minus = $value - $average; // 学生选课数 - 平均值
$square += pow($minus, 2);
}
if ( $stus < 1 ) { // 如果上面统计出来的学生总数为0,则返回错误(0不做除数)
exit("Bad argument.");
}
// 下面这一句就计算出方差了,你可以用 round($variance) 等函数来处理方差的值
$variance = $square / $stus; // 上面计算出的平方值 除以 学生总数
// $variance = round($variance, 2); // 精确到 0.01
echo "方差:". $variance;
手写代码,可能会有些地方有问题。SQL我不是很熟悉,所以我没法用SQL直接操作数据..只能用PHP了。希望可以帮到你
是得用while循环操作。
SELECT DISTINCT sutdent_id AS sid, COUNT(*) AS cot FROM student_course GROUP BY `student_id`
这就可以得到两个值,学生ID和课程数量。你是不是要获取学生的课程数量呢?
上面这条语句用mysql_query查询,我假设变量为$query
$fetch = mysql_fetch_array($query);
$count = $fetch["cot"]; // 这个就是学生选课的数量了。
这样操作很麻烦,所以实际上我不会这么做.. 首先用
$query = mysql_query("SELECT DISTINCT student_id FROM student_course");
找出所有学生的ID,然后while循环
// 定义两个变量
$sum = 0; // 所有学生选课总数,为了计算平均值
$stus = 0; // 学生总数,同上,在while循环中算出
$scount = array(); // 建立一个数组,储存学生id对应到的选课数量
while( $student = mysql_fetch_array($query) ) {
$id = $student["student_id"];
$student_query = mysql_query("SELECT COUNT(*) AS count FROM student_course WHERE student_id = $id");
$fetch = mysql_fetch_array($student_query);
// 这里操作数组,在数据库操作的循环之后来使用
$stus++; // 增加一个学生数量
$sum += $fetch["count"]; // 增加选课总数
$scount[$id] = $fetch["count"]; // 学生ID对应到选课的数量
}
// 上面已经完成了所需要的数据,可以直接操作了.
$average = $sum / $stus; // 平均值
$square = 0; // 计算选课数 - 平均值 的平方
foreach( $scount as $value ) {
$minus = $value - $average; // 学生选课数 - 平均值
$square += pow($minus, 2);
}
if ( $stus < 1 ) { // 如果上面统计出来的学生总数为0,则返回错误(0不做除数)
exit("Bad argument.");
}
// 下面这一句就计算出方差了,你可以用 round($variance) 等函数来处理方差的值
$variance = $square / $stus; // 上面计算出的平方值 除以 学生总数
// $variance = round($variance, 2); // 精确到 0.01
echo "方差:". $variance;
手写代码,可能会有些地方有问题。SQL我不是很熟悉,所以我没法用SQL直接操作数据..只能用PHP了。希望可以帮到你
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询