2016-07-07 99 views
0

我正在構建一個應用程序(Rails中)來刮取NBA數據(主要是爲了我自己的啓發和學習工具)。我從頭開始使用postgresql,因爲如果我要使用它,它會更有意義。數據庫模式的設置完全按照我的意願here如何計算數字分組的平均值

參與者實例基於TEAM概念 統計實例基於PLAYER概念,因此統計信息的許多實例組成了參與者的「總計」。

下面的查詢:

Select SUM(steals) from statistics 
INNER JOIN participants on statistics.participant_id = participants.id 
INNER JOIN teams on participants.team_id = teams.id 
WHERE teams.id = 15 
GROUP BY statistics.participant_id; 

收益率(在PSQL終端應用程序)

sum 
----- 
    8 
    7 
    5 
    7 
    6 
    7 
    10 
    6 
    7 
    6 
    7 
    5 
    9 
    11 
    4 
    7 
    8 

如何編寫SQL查詢來計算基於這17行的平均

(編輯以簡化查詢並只詢問一個問題)

+0

@MageeWorld你已經接近做你想做的事了。試試看看像'AVG()'這樣的Aggrigate函數。 –

+0

使用子查詢:'SELECT ... FROM(SELECT ... GROUP BY ...)s GROUP BY ...' –

+0

@CoderofCode我知道聚合函數(儘管我的大部分經驗都在mysql中),但是我不知道如何在平均查詢中包裝聚合查詢 – MageeWorld

回答

0

使用以下查詢包裹您的查詢

SELECT sum, AVG(sum) 
FROM (
    -- your query here 
) x 

在某些系統上,您還可以使用不需要外部查詢的窗口功能。其語法如下所示

AVG(sum) OVER() as avg 

由於您正在尋找的平均值是分組的結果,因此您無法在此處使用它。

+0

你給了我什麼指向我在正確的方向,但爲我的需要 - 這是什麼工作*選擇AVG(總和)從(我的查詢)作爲總和;'*(PS - 我做錯了什麼或你不能打'return'in edits? – MageeWorld

+0

@MageeWorld'SELECT AVG(sum)AS sum FROM(stuff);'是編寫它的更加標準的方式 - 但它看起來很好。 – Hogan