我有两个表格
所以,我正在提取我的积分被累加的实际月份,同时获取下个月的开始时间,这样我就可以说“给我联系人计数,其中他们的创建时间 < 下一个月”。但是它抱怨说
points
和 contacts
,我想按月份分组获得每个联系人的平均 points.score
。请注意,这两个表格没有关系,我只是想得到一个月内创建的点数总和除以那个月存在的联系人数量。
所以,我需要按创建日期月份对点数进行求和,并且我需要仅针对该月份获取联系人的数量。正是最后一个部分让我感到困惑。我不确定如何在子查询中使用外部查询的列。我尝试了以下内容:
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 不存在
。这是可以理解的,因为子查询对外部查询一无所知。用points.next_month
限定也不起作用。那么有谁能指导我该如何实现呢?
表:
Points
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(不使用子查询)
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"