2013-08-29 4 views
2

나는 각 별표에서 값을 (1 ~ 5) 내 db에 저장하는 4 개의 별 등급 등급 위젯을 가지고 있습니다. 사용자는이 등급을 사용하여 다른 사용자를 평가할 수 있습니다. 스타 그룹. 같은1-5 등급 등급 - 평균 점수 계산 방법

뭔가 :

is user x a jealous person? * * // (=2) 
is user x a happy person? * * * * // (=4) 
is user x a clever person? * * * * * // (=5) 
is user x a humble person? * * * * * // (=5) 

그래서 투표 후 나는 기록과 같이 얻을 수는 :

*mysql sample row data 

------------------------------------------------------------------- 
ID from_user_id to_user_id rate_value 
------------------------------------------------------------------- 
1 2234   123   2  
2 2234   123   4 
3 2234   123   5 
4 2234   123   5 
------------------------------------------------------------------- 

은 어떤 종류의 쿼리를 실행합니다. 결과에서 사용자가 사용자가 두 개 이상의 점수 행이 후, 나는 그를 위해 다른 테이블에 소수 점수를 저장하고 싶습니다 (20)

되어있을 수 있습니다

id=1 
    from_user_id = 2234 
    to_user_id = 123 
    a1=2 
    a2=4 
    a3=5 
    a4=5 

그래서 가장 좋은 점수 folllowing, 0 ~ 10, 다음과 같이 말하십시오 : 7.1.

어떻게하면됩니까? 미안 해요, 수학은 못해요. 당신이 1-10 규모를 원한다면

+0

싶은하지 현열 평균값 (2 + 4 + 5 + 5)/4 = 4 일 보여? (모든 값의 합계와 합계 값의 나누기) – JimL

+0

ax/10 값을 원할 경우 (2 + 4 + 5 + 5)/2 = 8을 할 수 있습니다. (모든 값을 합한 다음 2로 나누면 20 내지 10) – JimL

답변

2

,

가 20에서 15을한다면, 즉 7.5를 가진 동일합니다 당신이 2 하여 총 점수를 분할하기 만하면됩니다 >15/20 = 0.75와 마찬가지로 7.5/10이기 때문입니다.

1

글쎄, 먼저 우리는 당신이 10 점을 기준으로 무엇인지 결정해야합니다. 우리가 이것을 별의 기초로 삼는다면, 그들은 단지 5로 올라가므로, 우리는 그것을 두배로 늘릴 것입니다.

//Initialize Variable 
$score = 0; 

//Use for loop to go through $row['a#'] values 
for($x = 1; $x < 5; ++$x) 
{ 
    //Add $row['a#'] after multiplying 
    $score += ($row['a'.$x] * 2); 
} 
//divide by 4 (number of scores) and round to first decimal spot 
$score = round($score/4, 1); 

echo $score; //Outputs 8 (4+8+10+10 = 32 => 32/4 = 8) 
-1
Algorithm: Calculate_Average_Star_Rating () 
1. for each (product exixts in table_product HDB) do 
2. for each (Authenticated user rate for respective product in table_rating HDB) do 
3.  Read corresponding weight from ratings column in table_rating HDB 
     Calculate Weighted_Mean = ∑ (weight * number of users at that weight)/ 
              Total number of users 
4. end for 
5. Store Weighted_Mean in corresponding rows avg_rating column in table_product HDB 
6. end for