У меня есть две таблицы точек
и контактов
, и я пытаюсь получить среднее баллов. Оценка
за контакт, сгруппированный на ежемесячной основе. Обратите внимание , что точки и контакты не связаны, мне просто нужно разделить сумму баллов, созданных за месяц, на количество контактов, существовавших в этом месяце.
Итак, мне нужно суммировать баллы, сгруппированные по месяцу 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"