在这个场景中,我有两个表用户和事务.我想将指定时间段内的所有交易分为三类:第一类定期存款、第二类定期存款和附加存款.
要计算出第一笔定期存款,您需要使用created_at
字段判断用户在该笔存款之前是否没有任何交易,对于第二笔定期存款,他们在该笔存款之前会有一笔其他交易,而对于其他交易,他们在该笔存款之前应该有两笔或更多交易.
transactions表有两个我们关心的字段:
-
user
(用户id) -
created_at
(创建事务的时间)
这是我的try ,但我很难想象整个查询.我该怎么做有什么 idea 吗?
SELECT
COUNT(t.id) as first_time_deposits
FROM
transactions t
WHERE
status = 'approved' AND DATE(t.created_at) BETWEEN (CURDATE() - INTERVAL 0 DAY) AND CURDATE()
GROUP BY user
HAVING NOT EXISTS
(
SELECT
u.id
FROM
transactions u
WHERE
u.created_at < t.created_at
)
我在这里使用日期间隔只是为了过滤一天、一周等之间的交易.这个查询不起作用,因为我试图在子查询中引用外部查询的日期.我还缺少二次定期存款和附加存款.
我正在寻找的示例输出:
first_time_deposits | second_time_deposits | additional_deposits |
---|---|---|
15 | 5 | 6 |
在选定的时间段内执行所有操作.
任何帮助都将不胜感激.