我有一列計數,並且希望通過此列的最大值來劃分列以獲得比率。 我試過sql按列分列最大值
select t.count/max(t.count)
from table t
group by t.count
但失敗。 我也試過沒有GROUP BY的那個,仍然失敗。
訂購計數desc並選擇第一個作爲紅利沒有在我的情況下工作。考慮我對產品子類別有不同的計數。對於每個產品類別,我希望將子類別的計數除以該類別中的最大計數。我想不出一種避免集合函數的方法。
我有一列計數,並且希望通過此列的最大值來劃分列以獲得比率。 我試過sql按列分列最大值
select t.count/max(t.count)
from table t
group by t.count
但失敗。 我也試過沒有GROUP BY的那個,仍然失敗。
訂購計數desc並選擇第一個作爲紅利沒有在我的情況下工作。考慮我對產品子類別有不同的計數。對於每個產品類別,我希望將子類別的計數除以該類別中的最大計數。我想不出一種避免集合函數的方法。
如果你想每個類別中的MAX(),你需要一個相關子查詢:
select t.count*1.0/(SELECT max(t.count)
FROM table a
WHERE t.category = a.category)
from table t
,或者您需要PARTITION BY
您MAX()
select t.count/(max(t.count) over (PARTITION BY category))
from table t
group by t.count
在所有SQL方言以下工作:
select t.count/(select max(t.count) from t)
from table t
group by t.count;
注意SQL的某些版本做整數除法,那麼結果將是0或1。您可以通過1.0或鑄造乘以解決這個問題浮動。
大多數SQL版本也支持:
select t.count/(max(t.count) over())
from table t
group by t.count;
同樣的原則同樣適用有關整數除法。
您可能需要使用子查詢導出max
值嘗試(包括在同一個查詢可能無法正常工作,你期待的方式,因爲你是在說你是聚集在同一列編組)
Select t.count/(select max(sub.count) from table sub)
from table t
group by t.count
+1雖然我仍然認爲分子和分母應該交換。 – Yuck