Использование результата внешнего запроса в подзапросе в postgresql

У меня есть две таблицы точек и контактов , и я пытаюсь получить среднее баллов. Оценка за контакт, сгруппированный на ежемесячной основе. Обратите внимание , что точки и контакты не связаны, мне просто нужно разделить сумму баллов, созданных за месяц, на количество контактов, существовавших в этом месяце.

Итак, мне нужно суммировать баллы, сгруппированные по месяцу created_at, и мне нужно подсчитать количество контактов ТОЛЬКО ДЛЯ ЭТОГО МЕСЯЦА. Это последняя часть, которая меня обманывает. Я не уверен, как использовать столбец из внешнего запроса в подзапросе. Я пробовал что-то вроде этого:

SELECT SUM(score) AS points_sum,
  EXTRACT(month FROM created_at) AS month,
  date_trunc('MONTH', created_at) + INTERVAL '1 month' AS next_month,
  (SELECT COUNT(id) FROM contacts WHERE contacts.created_at <= next_month) as contact_count
FROM points
GROUP BY month, next_month
ORDER BY month

Итак, я извлекаю фактический месяц, в котором суммируются мои баллы, и в то же время получаю начало next_month, чтобы я мог сказать: «Дайте мне количество контактов, где они созданы в is

Но он жалуется, что столбец next_month не существует Это понятно, поскольку подзапрос ничего не знает о внешнем запросе. Квалификация с очками.next_month тоже не работает.

Так может ли кто-нибудь указать мне в правильном направлении, как этого добиться?

Таблицы:

Очки

score | created_at
10    | "2011-11-15 21:44:00.363423"
11    | "2011-10-15 21:44:00.69667" 
12    | "2011-09-15 21:44:00.773289"
13    | "2011-08-15 21:44:00.848838"
14    | "2011-07-15 21:44:00.924152"

Контакты

id | created_at
6  | "2011-07-15 21:43:17.534777"
5  | "2011-08-15 21:43:17.520828"
4  | "2011-09-15 21:43:17.506452"
3  | "2011-10-15 21:43:17.491848"
1  | "2011-11-15 21:42:54.759225"

сумма, месяц и следующий_месяц (без подзапроса)

sum | month | next_month
14  | 7     | "2011-08-01 00:00:00"
13  | 8     | "2011-09-01 00:00:00"
12  | 9     | "2011-10-01 00:00:00"
11  | 10    | "2011-11-01 00:00:00"
10  | 11    | "2011-12-01 00:00:00"
7
задан brad 16 November 2011 в 00:04
поделиться