Select com re ocorrências de um registro em período

Preciso saber se um registro ocorreu novamente em um período de 7 dias. Para isso conto com uma tabela que salva os registros e a data de ocorrência. Por exemplo:

Registro: x | Data: 13/03/2017 Registro: y | Data: 14/03/2017 Registro: x | Data: 17/03/2017 Registro: x | Data: 21/03/2017 Registro: z | Data: 31/03/2017

Para isso o usuário informaria uma data inicial e uma data final, por exemplo: registros entre 01/03 e 31/03.

Preciso que o resultado me indique quantas vezes no período o registro se repetiu usando o critério que a diferença em dias de um para o outro deve ser de no máximo 7 dias. No momento estou usando o seguinte código, que apenas consegue me trazer no período quantas vezes o mesmo registro ocorreu, mas não tem o critério dos 7 dias.

SELECT codigo, data FROM aviso WHERE data IS NOT NULL AND data BETWEEN To_Date(‘01/03/2017 00:00:00’, ‘DD/MM/YYYY HH24:MI:SS’) AND To_Date(‘31/03/2017 00:00:00’, ‘DD/MM/YYYY HH24:MI:SS’) --HAVING Count(*) > 1 ORDER BY codio

Alguem teria uma ideia de como fazer isso? Estou usando oracle.

Cara usando DATEDIFF você não consegue algo assim?

SELECT codigo, COUNT(*) AS qtd, data FROM aviso 
WHERE data IS NOT NULL AND data 
BETWEEN To_Date('01/03/2017 00:00:00', 'DD/MM/YYYY HH24:MI:SS') 
AND To_Date('31/03/2017 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
GROUP BY codigo, data
HAVING COUNT(*) > 1 AND @DATEDIFF('DD', data, data) <= 7
ORDER BY codigo

O DD segundo a doc, serve para trazer a diferença em dias…