我需要获取sql中每一行的平均值,例如:
这是第一张table
+ ---+------+-------------+
| course_id | course_name |
+ ----------+-------------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | g |
+ ---+------+-------------+
这是第二个表,我需要得到的id 1和2的平均值。结果例如:
+ -------------------+------+----------+
| course_feedback_id | rate |course_id |
+ -================--+------+----------+
| 1 | 4 | 1 |
| 2 | 3 | 1 |
| 3 | 2 | 2 |
+ -------------------+------+----------+
这是我需要的最后答案
+ ----------------------+
| course_id | AVG(rate) |
+ -=======--+-----------+
| 1 | 3.5 |
| 2 | 2 |
+ ----------------------+
我试过这个解决方案,但它只会给我第一行,而不是所有的记录。
SELECT *, AVG(`rate`) from secondTable
请帮忙
3条答案
按热度按时间suzh9iv81#
试试这个:
agyaoht72#
rjee0c153#
Select course_id,t2.rate from table1 where course_id,rate in (Select course_id,avg(rate) as rate from table group by course_id t2)
如果您有多个条目/冗余条目,并且希望每个条目都找到一些聚合,因为在本例中,您得到了包含冗余记录的id,在这种情况下,请始终尝试使用group by
as group by顾名思义将对应用它的列的记录进行分组,如果应用聚合avg in this case
将是应用它的groupwise列,而不是像id 1那样作为一个整体,我们有2个冗余条目,因此itll apply avg(id1_条目)…同样作为一个组。