php - AVG 在同一列上按另一列单个 sql 查询中的值

标签 php mysql sql average

我想通过不同列的单个 sql 查询中的值在同一列上找到 AVG。

table - question_rating
review_id
question_id
rating
  • 每条评论都有 16 个问题和评分。
  • question_id 值为 1 到 16。
  • 评级值从 1 到 5。

我想找到一组问题的平均值

期望的输出-

qustion_id     rating
-------------------------
g1               4.4
g2               3.7
g3               5.6

g1 是一组问题 (1,3) g2 是一组问题 (2,6) g3 是一组问题 (7,8) ....g8

伪代码-

 select (if(qustion=1 and question=3) as g1,
if(qustion=2 and question=6) as g2), ..
)avg(rating of respective group) from question_rating

我知道这可以通过单独查询来完成,但我想通过单个查询来了解。

或者通过 php 等找到此类输出的任何简单方法。

最佳答案

你应该做一个表 question_groups

question_id  group_id
q1          g1
q2          g2
q3          g1
q4          g3
q5          g3
q6          g2

选择将是

select group_id, avg(rating)
from question_rating a
  join question_groups b on (a.question_id= b.question_id)
group by group_id

关于php - AVG 在同一列上按另一列单个 sql 查询中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8835487/

相关文章:

mysql - dBase 表达式 类似于 MYSQL 中没有

mysql - 求和/格查询的最佳索引策略

java - 无法从数据源获取连接

javascript - JS 过滤器/自动完成

php - 我的 MYSQL 查询的 where 部分出错

php - 404 错误页面显示 HTTP 状态 200 而不是 404

mysql - 显示符合条件的最新ID

sql - Spring Data JPA Native Query - 如何使用 Postgres ARRAY 类型作为参数

php - 将图像从我的服务器上传到受密码保护的网站

php - 在 CodeIgniter 3 中使用 Illuminate/Database Eloquent ORM 进行多数据库连接