2016-10-21 173 views
-1

這是不合法的做max(count()),讓我怎麼完成計算如下所示的貢獻(並同時獲得其它列)計算貢獻

SELECT id, 
     Avg(time)  AS avgSec, 
     Stdev(time) AS stdevSec, 
     Count(time) AS cnt, 
     Avg(time)*Count(time)/max(Count(time)) AS contribution 
FROM ...very long and complex query... 
+0

可能重複:http://stackoverflow.com/questions/2436820/can-i-do-a-maxcount-in-sql –

+0

什麼是貢獻的公式 –

+0

我不想重複冗長而複雜的查詢 – Cine

回答

2

使用MAX()OVER()窗口集合函數來獲取最大計數出所有記錄

這是正確的做法

Avg(time)*Count(time)/max(Count(time)) over() 
+0

Over()正在按照你寫的第一個工作。Over(partition)給出錯誤的結果 – Cine

+0

@Cine - 好的,可能是我看過了 –