2013-12-12 114 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。 –