Consulta para contagem de valores distintos em um intervalo de datas rotativo

Eu tenho um conjunto de dados de endereços de email e datas em que esses endereços de email foram adicionados a uma tabela. Pode haver várias entradas de um endereço de e-mail para várias datas diferentes. Por exemplo, se eu tiver o conjunto de dados abaixo. Eu estaria procurando obter a data e a contagem de e-mails distintos que temos entre essa data e três dias atrás.

<code>Date   | email  
-------+----------------
1/1/12 | [email protected]
1/1/12 | [email protected]
1/1/12 | [email protected]
1/2/12 | [email protected]
1/2/12 | [email protected]
1/3/12 | [email protected]
1/4/12 | [email protected]
1/5/12 | [email protected]
1/5/12 | [email protected]
1/6/12 | [email protected]
1/6/12 | [email protected]
1/6/12 | [email protected]
</code>

O conjunto de resultados seria semelhante a este se usarmos um período de data de 3

<code>date   | count(distinct email)
-------+------
1/1/12 | 3
1/2/12 | 3
1/3/12 | 3
1/4/12 | 3
1/5/12 | 2
1/6/12 | 2
</code>

Posso obter uma contagem distinta de um período usando a consulta abaixo, mas procurando obter uma contagem de um intervalo por dia, por isso não preciso atualizar manualmente o intervalo para centenas de datas.

<code>select test.date, count(distinct test.email)  
from test_table as test  
where test.date between '2012-01-01' and '2012-05-08'  
group by test.date;
</code>

Ajuda é apreciada.

questionAnswers(4)

yourAnswerToTheQuestion