2013-12-12 116 views
0

我有如何获取mysql中同一行的列值和平均值?

col1 col2 col3 

1  10  3 
2  20  3 
3  30  4 
4  40  4 

需要得到输出

col2 col3 Avg 

10  3  15 
20  3  15 
30  4  35 
40  4  35 

所以基本上我需要平均在COL3表TBL结构。 我试图

select col2,col3,avg(col2) from tbl1 group by col3 

但这只会给我们每一匹配组中的第一行。

如何在mysql中完成此操作?

回答

0
select tbl1.col2, tbl1.col3, tbl2.avgcol2 
from tbl1 
inner join 
(
    select col3,avg(col2) as avgcol2 
    from tbl1 
    group by col3 
) tbl2 on tbl1.col3 = tbl2.col3 
+0

非常感谢,我的TBL 1其实这本身就是一个子查询。现在我无法引用使用别名,并执行相同的两次不会好。任何建议? –

0

您可以在选择使用子查询:

select t1.col2, 
     t1.col3, 
     (select avg(t2.col2) from tab1 t2 where t2.col3 = t1.col3) AS AVERAGE 
FROM tab1 t1 

sqlfiddle demo

+0

非常感谢,请参阅我对@ juergen的回答的评论。那里有任何建议。 –

+0

根据你的建议,我的查询将如下所示:'select t1.col2,t2.col3,(从t1选择avg(t2.col3),其中t1.col3 = col3)作为平均值(选择....)t1' –

+0

这更棘手。您可以尝试在子查询中执行此操作来检查原始表,然后在上面的查询中只会执行一次t1.average。 –