php - Mysql - 如何执行此 sql

标签 php mysql sql

我有一个“评论”表,其中包含 N 条记录和 3 个字段。

字段ID、字段名称和分数字段。

我正在尝试做的是一个查询,该查询返回按“分数”字段分组但各部分之间有值的分组。

换句话说,我想将分数从 0 到 1 的记录分组......分数从 1 到 2 的记录......依此类推,直到 5。

现在,我正在用 5 个不同的 sql 来做这件事

    Select ifnull(avg(score),0) as avg_score,count(*) as count from reviews where score between 0 and 1 and status=1;

    Select ifnull(avg(score),0) as avg_score,count(*) as count from reviews where score between 1.01 and 2 and status=1;

最佳答案

您可以按如下方式使用 FLOOR 函数:

SELECT
    CONCAT(FLOOR(SCORE), ' - ', FLOOR(SCORE) + 1) AS SCORE_RANGE, 
    IFNULL(AVG(SCORE), 0) AS AVG_SCORE,
    COUNT(*) AS COUNT
FROM
    REVIEWS
WHERE STATUS = 1 AND FLOOR(SCORE) <= 5 -- adjust value according to your requirement
GROUP BY FLOOR(SCORE);

干杯!

关于php - Mysql - 如何执行此 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850547/

相关文章:

javascript - 从电脑获取当前时间并将其保存在数据库中

php - 在 Woocommerce Admin Orders 列表中添加可排序的自定义列

php - Laravel 5.5 mysql 驱动使用两个数据库时报错

Mysql:统计每个用户的子表

SQL 执行计划显示相同输入的不同结果

javascript - 我是让 Mysql 连接保持事件状态还是关闭它然后再次打开?

mysql - 规范化 MySQL 数据库未更新

mysql - 在mysql中查找所有用户购买的所有单个项目

php - MySQL 日期时间与 session 中设置的日期时间。哪一个先出现?

php - Codeigniter $this->db->get(),我如何返回特定行的值?