Php mysql查询计算评级和

Php mysql查询计算评级和,php,mysql,sql,count,Php,Mysql,Sql,Count,我有下表 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 ); 我需要使用此查询编

我有下表

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;

表上记录的基本计数不会产生
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

您好,这是迄今为止解决问题最简单的查询,但它不会显示等级5,因为它不在列表中<代码>:D
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