データベースに記録されている Web サイトのエントリをチェックしています
列: browser、click_type_id、referrer、datetime
複数の行に同じ browser、click_type_id、および referrer があり、タイムスタンプが付けられている (互いに 1 分以内に発生している) 場合、それらは重複していると見なされます。
上記の基準に基づいて、これらの重複を照会できる SQL ステートメントが必要です。
どんな助けでも大歓迎です。
データベースに記録されている Web サイトのエントリをチェックしています
列: browser、click_type_id、referrer、datetime
複数の行に同じ browser、click_type_id、および referrer があり、タイムスタンプが付けられている (互いに 1 分以内に発生している) 場合、それらは重複していると見なされます。
上記の基準に基づいて、これらの重複を照会できる SQL ステートメントが必要です。
どんな助けでも大歓迎です。
SELECT
T1.browser,
T1.click_type,
T1.referrer,
T1.datetime,
T2.datetime
FROM
My_Table T1
INNER JOIN My_Table T2 ON
T2.browser = T1.browser AND
T2.click_type = T1.click_type AND
T2.referrrer = T1.referrer AND
T2.datetime > T1.datetime AND
T2.datetime <= DATEADD(mi, 1, T1.datetime)
挿入を防ぐには
INSERT MyTable (browser, click_type_id, referrer, [datetime])
SELECT
@browser, @click_type_id, @referrer, @datetime
WHERE
NOT EXISTS (SELECT *
FROM
MyTable M2
WHERE
browser = @browser AND click_type_id = @click_type_id AND referrer = @referrer
AND
[datetime] < DATEADD(minute, -1, @datetime))
既存のデータを検索するには (smalldatetime の精度に依存し、コメントから質問までの問題を回避するのに役立つ場合があります)
SELECT
browser, click_type_id, referrer, COUNT(*)
FROM
MyTable
GROUP BY
browser, click_type_id, referrer, (CAST [datetime] AS smalldatetime)
HAVING
COUNT(*) > 1