子查询联接中第二个查询的空值

时间:2018-06-21 20:02:03

标签: postgresql join subquery

我有关于用户,他们的创建日期和他们的登录计数的数据。我正在尝试获取月/年,在所述月/年中创建的用户数,以及过去3年中在同一月/年中这些用户的登录数。为此,我正在将用户表加入到操作表中。

我想要这样的列输出:

Year/Month  UsersCreated  Year/Month  UsersLogin
2018-01         25        2018-01         20
2018-02         45        2018-01         36

...等等

我在下面使用的查询提取正确的年/月和UsersCreated的计数,但仅提取年/月UsersLogin计数的空值。

SELECT
*
FROM
(SELECT
to_char(u.created_at, 'yyyy-mm'),
count(u.id) as usercount
FROM user as u
LEFT JOIN actions as a on u.id = a.user_id
where a.action = 'account_created'
and u.type = 'AccountUser'
and u.name not like '%test%'
group by to_char(u.created_at, 'yyyy-mm')) as a
LEFT JOIN
(SELECT
to_char(a.created_at, 'yyyy-mm'),
count(distinct u.id) as usercount
FROM user as u
LEFT JOIN actions as a on u.id = a.user_id
where a.action = 'user_login'
and u.type = 'AccountUser'
and u.name not like '%test%'
GROUP BY to_char(a.created_at, 'yyyy-mm')) as b
ON a.usercount = b.usercount;

这两个查询如果都在没有联接的情况下自行运行,则会填充正确的结果,因此我不确定是否只是没有正确地联接子查询还是某个地方的分组不正确?

1 个答案:

答案 0 :(得分:1)

尝试加入to_char()的结果,为该列在两个子查询中使用相同的名称,然后加入该名称。