Blindy द्वारा सुपर उपयोगी उत्तर, यहाँ पर आधारित PHP कोड है। कुछ उपयोगी मिल सकता है। परिणाम ओपी के उदाहरण के अनुसार 4.11 होंगे:
$ratings = array(
5 => 252,
4 => 124,
3 => 40,
2 => 29,
1 => 33
);
function calcAverageRating($ratings) {
$totalWeight = 0;
$totalReviews = 0;
foreach ($ratings as $weight => $numberofReviews) {
$WeightMultipliedByNumber = $weight * $numberofReviews;
$totalWeight += $WeightMultipliedByNumber;
$totalReviews += $numberofReviews;
}
//divide the total weight by total number of reviews
$averageRating = $totalWeight / $totalReviews;
return $averageRating;
}
उपरोक्त $ रेटिंग सरणी का निर्माण कैसे करें
उदाहरण छद्म कोड, लेकिन जो काम करना चाहिए जो यह बताता है कि $ रेटिंग सरणी का निर्माण कैसे किया जाता है जब जानकारी डीबी में संग्रहीत होती है यह मानते हुए कि आपके पास "रेटिंग" नामक एक तालिका है और "रेटिंग" नामक एक कॉलम है। इस मामले में यह 1 जॉइन है, आपको सभी रेटिंग प्राप्त करने के लिए 4 जॉइन करने की आवश्यकता होगी, लेकिन यह आपको शुरू करना चाहिए:
SELECT count(c1.rating) as one_star, count(c2.rating) as two_star
FROM ratings c1
LEFT OUTER JOIN
ratings c2
ON
c1.id = c2.id
WHERE
c1.rating = 1
AND
c2.rating = 2
टिप्पणियों में सुझाया गया एक और तरीका
SELECT SUM(rating = 1) AS one_s ,SUM(rating = 2) AS two_s ,SUM(rating = 3) as three_s FROM reviews where product_id = 9