Php 按Id显示平均评级,并显示Id计数
我有一个MYSQL表,我想通过产品id的计数获得平均评级Php 按Id显示平均评级,并显示Id计数,php,mysql,sql,count,average,Php,Mysql,Sql,Count,Average,我有一个MYSQL表,我想通过产品id的计数获得平均评级 ╔════╦═════════════╦══════════╦══════════╗ ║ ID ║ product_Id ║ rating ║ status ║ ╠════╬═════════════╬══════════╬══════════╣ ║ 1 ║ 5 ║ 1 ║ 1 ║ ║ 2 ║ 5 ║ 3 ║ 1 ║ ║ 3 ║
╔════╦═════════════╦══════════╦══════════╗
║ ID ║ product_Id ║ rating ║ status ║
╠════╬═════════════╬══════════╬══════════╣
║ 1 ║ 5 ║ 1 ║ 1 ║
║ 2 ║ 5 ║ 3 ║ 1 ║
║ 3 ║ 5 ║ 4 ║ 1 ║
║ 4 ║ 4 ║ 3 ║ 1 ║
║ 5 ║ 4 ║ 5 ║ 1 ║
║ 6 ║ 6 ║ 4 ║ 1 ║
║ 7 ║ 6 ║ 4 ║ 1 ║
╚════╩═════════════╩══════════╩══════════╝
我已经编写了这段代码,但没有得到预期的结果
SELECT r.product_id, ROUND(AVG(r.rating),0) as avg_rating, COUNT(r.product_id) AS products_total FROM review r
WHERE r.status = 1
GROUP BY r.product_id ASC
结果是,平均评分(同一产品Id的评分数)
如何获得上述结果如果我理解,那么您需要两个级别的聚合:
SELECT avg_rating, COUNT(*)
FROM (SELECT r.product_id, AVG(r.rating) as avg_rating, COUNT(r.product_id) AS products_total
FROM review r
WHERE r.status = 1
GROUP BY r.product_id
) p
GROUP BY avg_rating
当我用产品总数回复计数(*)时,产品计数不显示任何内容,但工作正常