2016-07-07 5 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, вы близки к тому, что вы хотите. Попробуйте и посмотрите на функции 'Aggrigate', такие как' AVG() 'для этого. –

+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 (sum) FROM (мой запрос) как сумму; '* (ps - я делаю что-то неправильно или вы не можете ударить «return» in edits? – MageeWorld

+0

@MageeWorld 'SELECT AVG (sum) AS sum FROM (материал);' более стандартный способ его записи - но это кажется прекрасным. – Hogan

Смежные вопросы