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
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