php - 按最高平均评分排序

标签 php mysql sql

我有一个名为 ranks 的表,它存储 1-7 的值并将其与 itemuser id 连接。

像这样:id |用户名 |值(value) | itemid.

为了显示项目的评分,我计算了 itemid=? 中所有值 (1-7) 的总和,并将它除以总行数。但是我没有值存储在 items 表本身。

获取平均评分:

    // total

    $stmt = $conn->prepare("SELECT SUM(value) as total FROM ranks WHERE itemid=?");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->bind_result($total);
    $stmt->fetch();
    $stmt->close();

    // num of rows

    $stmt = $conn->prepare("SELECT COUNT(value) FROM ranks WHERE itemid=?");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->bind_result($count);
    $stmt->fetch();
    $stmt->close();

    $avg = $total/$count;

但我不知道如何按最高评分排序,除非我将评分存储在 items 表本身中。是否可以使用单独的 ranks 表?

最佳答案

您可以使用 avg() 按最高评分检索 itemid。这与获取总和并除以计数相同:

select avg(value), itemid
from ranks
group by itemid
order by avg(value) desc

关于php - 按最高平均评分排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061586/

相关文章:

sql - Mysql 2 查询合二为一?

php - 将 PHP 数组中的所有 int() 值相加

php - mysql在oop php中选择

php - 如何更改 PHP 计算器中输出的颜色?

php - 多次调用 bind_param 的方法

mysql - 如何按天选出今天和明天少于指定时间的数据?

sql - 查找给定日期范围、持续时间和不可用日期列表的可用公寓

sql - 有没有办法在 Visual Studio 中将 SQL 脚本导入 MDF 数据库?

php - SQLite 的纯 PHP 实现?

php - Joomla 插件通过渗透现有模块或组件来添加新功能