有个数据表,大概100W条记录,字段:手机号,产品ID,日期(2018-01-01 13:22:42),其他
现在给定2个输入:
1.时间范围,如:60秒内
2.出现X次的记录数,如:5次需求描述,请提供60秒内,同一个用户出现5次及以上记录的数据。求大神解救!!!
现在给定2个输入:
1.时间范围,如:60秒内
2.出现X次的记录数,如:5次需求描述,请提供60秒内,同一个用户出现5次及以上记录的数据。求大神解救!!!
SET @d := 60 ; -- 60秒
SET @c := 5 ; -- 5次
SELECT
t.手机号,
t.产品ID,
t.日期
FROM
(SELECT
t.*,
(SELECT
COUNT(0)
FROM
table_name t1
WHERE t1.日期 BETWEEN t.日期
AND DATE_ADD(t.日期, INTERVAL + @d SECOND)
AND t1.手机号
AND t.手机号
AND t1.产品ID = t.产品ID -- 如果一个手机号码,就可以代表一个用户,请把这行去掉。
) c
FROM
table_name t) t.c >= @c;
SET @d := 60 ; -- 60秒
SET @c := 5 ; -- 5次
SELECT
t.手机号,
t.产品ID,
t.日期
FROM
(SELECT
t.*,
(SELECT
COUNT(0)
FROM
table_name t1
WHERE t1.日期 BETWEEN DATE_ADD(t.日期, INTERVAL - @d SECOND)
AND DATE_ADD(t.日期, INTERVAL + @d SECOND)
AND t1.手机号
AND t.手机号
AND t1.产品ID = t.产品ID -- 如果一个手机号码,就可以代表一个用户,请把这行去掉。
) c
FROM
table_name t) t.c >= @c;