【发布时间】:2015-05-07 10:27:13
【问题描述】:
我有两张桌子:users、user_source_history。
users表中保存了所有已注册的用户。并且,在表user_source_history 中,存储了他们的活动。这些活动可能包括登录系统、订购东西。所以一个用户可以在user_source_history 中多次存在。
现在的问题是我需要在 15 天的存储桶中找到所有活跃用户。
因此,例如,用户在 2014 年 12 月 3 日购买了一些东西。现在,该用户将在 2014-12-18 之前显示为活跃用户。
我需要找到日期范围内的所有活跃用户。
因此,例如,在这个日期范围内-
2014-12-03 - 10 users are active.
2014-12-04 - 10(active on 2014-12-03) + (new users for this date)
2014-12-05 - Number on active user on this date + all users in 15 day bucket
2014-12-06 - Number on active user on this date + all users in 15 day bucket
查询:
SELECT CAST(`user_last_interaction_date` as Date)
FROM `users` U
LEFT JOIN `user_source_history` USH on U.user_id = USH.user_id
WHERE `user_last_interaction_date` >
(SELECT DATE_ADD(`user_last_interaction_date`, INTERVAL -15 DAY)
FROM `users`
GROUP BY CAST(`user_last_interaction_date` as Date)
)
GROUP BY CAST(`user_last_interaction_date` as Date)
我试过这个查询,但 SQL 说 Subquery returns more than one row
如何拆分查询以运行多行?
【问题讨论】:
标签: mysql sql nested-queries