평균점수에서 가까운 사람을 뽑는 법 정보
평균점수에서 가까운 사람을 뽑는 법본문
아래와 같이 점수테이블에서 수학 점수만을 뽑아 수학평균을 내었는데요,
<? //점수 평점 구하기
$score=0;$s=0;$d=0;$cnt=0;
$sql = " select * from 점수테이블 where 수학";
$result = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result); $i++)
{
$score = number_format($rows[점수필드]);
$s = $s + $score;
$d = 1 + $d;
$cnt = $s / $d;
}
$average = ceil($cnt); //수학점수 평균
?>
수학평균에서 점수가 가까운 사람 3명을 뽑는 식은 어떻게 만들면 될까요,,,
예를 들어 5명의 수학점수가 아래와 같다면
95, 91, 88, 87, 70
평균점수는 86.2점인데요,
여기에서 86.2점하고 가장 근접한 사람 3명은 87, 88, 91 이렇게 3명이 되는데요,
평균에서 가까운 점수의 3명을 뽑는 법을 어떻게 함수를 만들어야 할지 조언주시면 감사하겠습니다.
<? //점수 평점 구하기
$score=0;$s=0;$d=0;$cnt=0;
$sql = " select * from 점수테이블 where 수학";
$result = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result); $i++)
{
$score = number_format($rows[점수필드]);
$s = $s + $score;
$d = 1 + $d;
$cnt = $s / $d;
}
$average = ceil($cnt); //수학점수 평균
?>
수학평균에서 점수가 가까운 사람 3명을 뽑는 식은 어떻게 만들면 될까요,,,
예를 들어 5명의 수학점수가 아래와 같다면
95, 91, 88, 87, 70
평균점수는 86.2점인데요,
여기에서 86.2점하고 가장 근접한 사람 3명은 87, 88, 91 이렇게 3명이 되는데요,
평균에서 가까운 점수의 3명을 뽑는 법을 어떻게 함수를 만들어야 할지 조언주시면 감사하겠습니다.
댓글 전체
근접하다라는 단어를 mysql 에서 찾기가 힘듭니다
가장 좋은건 같은것을 찾는것 그것도 아니라면
평균점수보다 작은 혹은 큰 또는 범위를 지정하거나 하는 식의 기준이 있어야 합니다.
추천 하는 방법은 평균보다 작은 3명 큰 3명을 뽑아 프로그램적으로 계산 하는 방법이 어떨까 합니다.
가장 좋은건 같은것을 찾는것 그것도 아니라면
평균점수보다 작은 혹은 큰 또는 범위를 지정하거나 하는 식의 기준이 있어야 합니다.
추천 하는 방법은 평균보다 작은 3명 큰 3명을 뽑아 프로그램적으로 계산 하는 방법이 어떨까 합니다.
${1차로 뽑을 사람 값} = "";
$sql = " select * from 점수테이블 where 점수필드 <{수학평균점수} order by 점수필드 asc limit 1 ";
$result1 = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result1); $i++) {
${1차로 뽑을 사람 값} .= $row[{1차로 뽑은사람 이름}]."(".$row[{1차로 뽑은사람점수}]."점), ";
}
$sql = " select * from 점수테이블 where 점수필드 >= {수학평균점수} order by 점수필드 desc limit 2 ";
$result2 = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result2); $i++) {
${1차로 뽑을 사람 값} .= $row[{1차로 뽑은사람 이름}]."(".$row[{1차로 뽑은사람점수}]."점), ";
}
echo ${1차로 뽑을 사람 값};
이렇게 구현하시면 될듯싶네요..
낮은사람은 1명
높은사람 2명 이런식으로 하면 좋을듯합니다.
$sql = " select * from 점수테이블 where 점수필드 <{수학평균점수} order by 점수필드 asc limit 1 ";
$result1 = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result1); $i++) {
${1차로 뽑을 사람 값} .= $row[{1차로 뽑은사람 이름}]."(".$row[{1차로 뽑은사람점수}]."점), ";
}
$sql = " select * from 점수테이블 where 점수필드 >= {수학평균점수} order by 점수필드 desc limit 2 ";
$result2 = sql_query($sql);
for ($i=0; $i < $rows=sql_fetch_array($result2); $i++) {
${1차로 뽑을 사람 값} .= $row[{1차로 뽑은사람 이름}]."(".$row[{1차로 뽑은사람점수}]."점), ";
}
echo ${1차로 뽑을 사람 값};
이렇게 구현하시면 될듯싶네요..
낮은사람은 1명
높은사람 2명 이런식으로 하면 좋을듯합니다.
평균점수와 근접한 사람 = 편차가 적은 순으로 뽑으심 될 듯 합니다.
편차 ..
http://ko.wikipedia.org/wiki/%ED%8E%B8%EC%B0%A8
1. 평균점수를 구한다.
2. 각각의 편차를 구한다.
3. 편차순으로 정렬한다.
4. 원하는 순위만 뽑아낸다.
배열에 넣고 편차값을 추가하고 배열을 편차순으로 정렬하는 방법을 추천드립니다.
편차 ..
http://ko.wikipedia.org/wiki/%ED%8E%B8%EC%B0%A8
1. 평균점수를 구한다.
2. 각각의 편차를 구한다.
3. 편차순으로 정렬한다.
4. 원하는 순위만 뽑아낸다.
배열에 넣고 편차값을 추가하고 배열을 편차순으로 정렬하는 방법을 추천드립니다.
평균에서 가까운 점수의 3명을 뽑는 법을 <---질문자체가 명확하지않습니다
점수가 예로든 것처럼만 된다는 법이 어딨습니까?
동점이 10명이 있을 수 있고 20명이 있을 수도 있는데 이 경우 어떤 3명을 뽑아낸다는 것인가요?
점수가 예로든 것처럼만 된다는 법이 어딨습니까?
동점이 10명이 있을 수 있고 20명이 있을 수도 있는데 이 경우 어떤 3명을 뽑아낸다는 것인가요?