2016-03-23 47 views
1

我有以下格式聚合功能,以保持特定的值,這取決於其他列

 
id_A  id_B  val 
-------------------------------- 
1   1   1 
1   2   2 
2   1   3 
2   3   4 

的數據是否有一個很好的方式,以組由ID_A同時保持線,其中ID_A = ID_B的價值?

我需要聚合的原因是,如果沒有這樣的線,我想平均。

結果應該是這樣的:

 
id_A  val 
----------------- 
1   1 
2   3.5 

我已經想出以下,但這種情況下,看起來醜陋,哈克給我。

Select id_A, 
    Coalesce(
     avg(case when id_A = id_B then val else null end), 
     avg(val) 
    ) as value 
From myTable 
Group by id_A; 
+0

您的查詢看起來不錯,我和我upvoted你所付出的努力。 –

+0

你使用的是什麼版本的postgres? –

+0

我使用的是postgres 8.3,不過謝謝你的回答。 – Atn

回答