我有一個名爲vegetation
2列的表:
type
,count
如何將查詢的結果按另一列中的值分組?
我要總結的計數,其中計數值大於平均計數小,所有這些,這就是它的更高的所有行。
我不知道如何在group by子句中反映這個...(或其他地方?)。
我猜想另一種做法應該是將一個值分配給所有低於平均值的數據,並將另一個值分配給所有高於平均值的數據,然後按該值分組。但我剛開始,也無法弄清楚如何做到這一點。
我有一個名爲vegetation
2列的表:
type
,count
如何將查詢的結果按另一列中的值分組?
我要總結的計數,其中計數值大於平均計數小,所有這些,這就是它的更高的所有行。
我不知道如何在group by子句中反映這個...(或其他地方?)。
我猜想另一種做法應該是將一個值分配給所有低於平均值的數據,並將另一個值分配給所有高於平均值的數據,然後按該值分組。但我剛開始,也無法弄清楚如何做到這一點。
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。
是的抱歉使用計數,我試圖簡化我的問題。感謝您的幫助,我現在發現瞭如何使用案例! – Lay
@ user1832041:沒問題。我只是不斷提及它,所以普通大衆就會明白這一點。 –
請在所有問題中包含PostgreSQL版本,表格定義(包括數據類型),樣本數據和預期結果。如Erwin所示,有可能沒有答案,但如果包含這些信息肯定會更容易。 –