2012-11-17 18 views
1

我有一個名爲vegetation 2列的表:
typecount如何將查詢的結果按另一列中的值分組?

我要總結的計數,其中計數值大於平均計數小,所有這些,這就是它的更高的所有行。

我不知道如何在group by子句中反映這個...(或其他地方?)。

我猜想另一種做法應該是將一個值分配給所有低於平均值的數據,並將另一個值分配給所有高於平均值的數據,然後按該值分組。但我剛開始,也無法弄清楚如何做到這一點。

+0

請在所有問題中包含PostgreSQL版本,表格定義(包括數據類型),樣本數據和預期結果。如Erwin所示,有可能沒有答案,但如果包含這些信息肯定會更容易。 –

回答

1
SELECT sum(CASE WHEN ct <= x.avg_ct THEN ct ELSE 0 END) AS sum_ct_low 
     ,sum(CASE WHEN ct > x.avg_ct THEN ct ELSE 0 END) AS sum_ct_hi 
FROM vegetation v 
    ,(SELECT avg(ct) AS avg_ct FROM vegetation) x 

的平均值是一個單一的值,可以只CROSS JOIN子查詢到基表(逗號分隔的表的列表意味着交叉連接)。
然後用簡單的CASE語句過濾。

我使用ct而不是count,因爲這是reserved word in SQL

+0

是的抱歉使用計數,我試圖簡化我的問題。感謝您的幫助,我現在發現瞭如何使用案例! – Lay

+0

@ user1832041:沒問題。我只是不斷提及它,所以普通大衆就會明白這一點。 –

相關問題