有個資料表,大概100W條記錄,欄位:手機號,產品ID,日期(2018-01-01 13:22:42),其他
現在給定2個輸入:
1.時間范圍,如:60秒內
2.出現X次的記錄數,如:5次
需求描述,請提供60秒內,同一個用戶出現5次及以上記錄的資料。
求大神解救!!!
uj5u.com熱心網友回復:
不知道是不是這個意思,你自己試試看。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;
uj5u.com熱心網友回復:
您這個只能取到第一條吧,后面4條沒有取出來。
是60秒內要5條記錄都要提取出來
uj5u.com熱心網友回復:
試試這個看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;
uj5u.com熱心網友回復:
您這個其實是120秒了,請仔細看一下題
uj5u.com熱心網友回復:
我這里沒有你的資料庫,寫完也不能測驗。大概的思路就是這樣,你可以嘗試自己修改一下條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/66865.html
標籤:MySQL
下一篇:左連接,子查詢優化
