mostrar - numerar registros repetidos sql
SQL encuentra registros duplicados que ocurren dentro de 1 minuto el uno del otro (2)
Estoy revisando las entradas al sitio web que están registradas en una base de datos
columnas: navegador, click_type_id, referrer y datetime
Si varias filas tienen el mismo navegador, click_type_id y referrer y tienen una marca de tiempo (se producen dentro de 1 minuto el uno del otro) se consideran duplicadas.
Necesito una declaración sql que pueda consultar estos duplicados según los criterios anteriores.
Cualquier ayuda es apreciada.
Para evitar inserciones
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))
Para encontrar en los datos existentes (se basa en la precisión de fecha pequeña y puede ayudar a evitar problemas según el comentario a la pregunta)
SELECT
browser, click_type_id, referrer, COUNT(*)
FROM
MyTable
GROUP BY
browser, click_type_id, referrer, (CAST [datetime] AS smalldatetime)
HAVING
COUNT(*) > 1
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)