2014-05-24 182 views
0

我該如何做下面的事情,我基本上需要統計應用程序的總數,然後再除以另一列的總和。sql count和sum在同一個語句

這裏是我的查詢,

select TIME_ID, CAMPUSID, GenderId, FEETYPEID, PrefRankId, QUALIFID, PRIMARYSTUDYFIELD, SUPSTUDYFIELD,IsYear12Id, COURSEID 
     , count(APPID) as TOT_NUM_APP, sum(ATAR) as TOT_ATAR, round(SUM(ATAR)/(SUM(COUNT(APPID)) OVER()) AS TOT_ATAR_AVG 
     from temp_fact tf1 
     group by TIME_ID, CAMPUSID, GenderId, FEETYPEID, PrefRankId, QUALIFID, 
       PRIMARYSTUDYFIELD, SUPSTUDYFIELD,IsYear12Id,courseid; 

見上面的查詢。但是,這是錯的,因爲我想ATAR平均是TOT_NUM_APP/TOT_ATAR

enter image description here

+0

聽起來像你需要一個子查詢。你能提供樣本數據和期望的結果嗎? – sgeddes

+0

你能提供一些樣本數據和期望的結果嗎? –

+0

@sgeddes我已更新我的問題 – Hades

回答

0

大多數數據庫支持窗口功能。所以,如果我理解正確,sum(count(appid))應該表示所有行的總計數。如果是這樣的話:

SELECT TIME_ID, CAMPUSID, GenderId, FEETYPEID, PrefRankId, QUALIFID, PRIMARYSTUDYFIELD, 
     SUPSTUDYFIELD, IsYear12Id, courseid , count(APPID) as TOT_NUM_APP, 
     SUM(ATAR)/(SUM(COUNT(APPID)) OVER()) as TOT_STUD_ATAR 
FROM temp_fact tf1 
GROUP BY TIME_ID, CAMPUSID, GenderId, FEETYPEID, PrefRankId, QUALIFID, PRIMARYSTUDYFIELD, 
     SUPSTUDYFIELD, IsYear12Id, courseid; 
+0

我使用甲骨文 – Hades