如何获取客户自上次交易之日起过去10天的交易次数。 示例:
Name Type Trx_date
Cody sale 08/05/2018 12:11:43
Cody sale 08/01/2018 07:51:49
Cody sale 08/01/2018 07:51:49
Cody sale 08/01/2018 07:51:49
Cody sale 07/28/2018 03:21:32
Cody sale 02/25/2018 05:19:34
Cody sale 01/20/2018 06:15:41
Laim sale 08/06/2018 11:41:23
Laim sale 08/01/2018 07:51:49
Laim sale 08/01/2018 07:51:49
Laim sale 07/30/2018 22:58:13
Laim sale 05/19/2018 03:21:02
Laim sale 02/25/2018 09:19:34
Laim sale 01/29/2018 07:15:41
结果必须为:
Name Type Last_Trx_date 10d_Count
Cody sale 08/05/2018 12:11:43 5
Laim sale 08/06/2018 11:41:23 4
答案 0 :(得分:0)
这是您的查询。
select a.Name , a.Type, b.tdate as Last_Trx_date, count(1) as d_Count from table1 a
inner join
(select max(Trx_date) as tdate , Name from table1 group by name) as b on b.Name = a.Name
where a.Trx_date> (b.tdate - interval 10 DAY)
group by a.Name , a.Type, b.tdate
答案 1 :(得分:0)
这会有所帮助
SELECT
Name,
SUBSTRING_INDEX(GROUP_CONCAT(Trx_date ORDER BY Trx_date DESC),',',1) AS last_transaction_date,
COUNT(*)
FROM
tableName
WHERE Trx_date >= (NOW() - INTERVAL 10 DAY)
GROUP BY Name;
答案 2 :(得分:0)
通常可以使用窗口函数来实现:
select t.name, count(*)
from (select t.*,
max(trx_date) over (partition by name) as max_trx_date
from t
) t
where trx_date >= max_trx_date - interval '10 day'
group by name;
请注意,这使用标准SQL。特别是,日期操作在数据库之间有所不同,因此where
子句可能需要修改。