【发布时间】:2016-08-24 17:54:44
【问题描述】:
我目前正在处理三个看起来像这样的不同表
用户:
user_id|createtime
-----------------------------
001 2016-07-20
002 2016-08-15
003 2016-08-05
004 2016-08-23
对象:
objc_id|createtime|user_id
-----------------------------
001 2016-07-20 001
002 2016-07-15 001
003 2016-08-05 002
004 2016-08-23 001
005 2016-08-19 003
006 2016-08-21 004
007 2016-08-22 004
事件:
event_id|createtime|objc_id
-----------------------------
001 2016-08-25 001
002 2016-08-26 004
003 2016-08-28 002
004 2016-08-27 005
005 2016-08-30 003
我已经做出了一些选择语句,告诉我在某个日期创建了多少新用户、对象或事件:
select createtime, count(user_id) as new_user from
user where createtime >= CURRENT_DATE - INTERVAL '30 days' group by
createtime;
select createtime, count(objc_id) as new_objc from
object createtime >= CURRENT_DATE - INTERVAL '30 days' group by createtime;
select createtime, count (event_id) from
event where createtime >= CURRENT_DATE - INTERVAL '30 days'
group by createtime;
现在我想做一个选择语句,其中显示所有新对象、用户和事件的数量,并按它们的创建时间对它们进行分组。
但是我无法解决这个问题。实现的目标如下所示:
createtime|new_user|new_objc|new_event
---------------------------------------
2016-07-15 1
2016-07-20 1 1
2016-07-22
2016-07-24
2016-08-05 1 1
2016-08-15 1
2016-08-19 1
2016-08-21 1
2016-08-22 1
2016-08-23 1 1
2016-08-25 1
2016-08-26 1
2016-08-27 1
2016-08-28 1
2016-08-30 1
...当然,某些日期可能会在一组中出现多次,因此计数将是 1 或更高。
目标是查看营销是否会随着时间的推移增加新用户数量、购买物品和参加活动(您需要活动物品)。
有没有人解决这个问题,或者我必须使用单独的结果表?
【问题讨论】:
标签: sql postgresql date join