我有下表
id item_id rating
1 10 1
2 10 2
3 10 2
4 10 3
5 10 3
6 10 3
7 10 4
如何编写查询以便我可以获得如下结果:
$ratings = array(
1 => 1,
2 => 2,
3 => 3,
4 => 1,
5 => 0
);
我需要使用此查询编写一个php函数来计算此函数的平均评分:
$total = 0;
$count = 0;
foreach($ratings as $number=>$frequency) {
$total += $number * $frequency;
$count += $frequency;
}
return $total / $count;
答案 0 :(得分:3)
SELECT
rating,
COUNT(rating) as Count
FROM rating
GROUP BY rating
答案 1 :(得分:3)
表格中记录的基本COUNT
不会产生5
,因为评分中没有值5
。但是,生成包含1-5
值并使用LEFT JOIN
加入它们的子查询将得到您想要的结果。
SELECT a.rating, COUNT(b.rating) totalCount
FROM
(
SELECT 1 rating UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION
SELECT 5
) a
LEFT JOIN tableName b
ON a.rating = b.rating
GROUP BY a.rating