例如,我需要为SQL中的每一行获取AVG:
这是第一张桌子
+ ---+------+-------------+ | course_id | course_name | + ----------+-------------+ | 1 | a | | 2 | b | | 3 | c | | 4 | g | + ---+------+-------------+
这是第二张桌子 我需要同时获取ID 1和ID 2的AVG。例如,结果:
+ -------------------+------+----------+ | 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
请帮助
答案 0 :(得分:1)
SELECT `id`, AVG(`rate`) FROM `your_table` GROUP BY `id`
答案 1 :(得分:0)
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
作为分组依据,如名称所示将对要应用该列的记录进行分组,如果您应用聚合avg in this case
将在其上对其应用的分组列不像id 1那样整体,我们有2个冗余条目,因此它将应用avg(id1_entries )..同样也是一个小组。
答案 2 :(得分:0)
尝试一下:
SELECT c.course_id, AVG(fb.rate)
FROM course AS c
INNER JOIN course_feedback AS fb ON fb.course_id = c.course_id
GROUP BY c.course_id