Запрос для подсчета различных значений в скользящем диапазоне дат

У меня есть набор данных адресов электронной почты и дат, когда эти адреса электронной почты были добавлены в таблицу. Может быть несколько записей адреса электронной почты для разных дат. Например, если у меня есть набор данных ниже. Я хотел бы получить дату и количество различных электронных писем, которые у нас есть между указанной датой и 3 дня назад.

Date   | email  
-------+----------------
1/1/12 | test@test.com
1/1/12 | test1@test.com
1/1/12 | test2@test.com
1/2/12 | test1@test.com
1/2/12 | test2@test.com
1/3/12 | test@test.com
1/4/12 | test@test.com
1/5/12 | test@test.com
1/5/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test1@test.com

Результирующий набор будет выглядеть примерно так, если мы используем период дат равный 3.

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

Я могу получить отчетливое количество дат в диапазоне, используя приведенный ниже запрос, но хочу получить количество диапазонов по дням, поэтому я делаю не нужно вручную обновлять диапазон для сотен дат.

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;

Помощь приветствуется.

12
задан Erwin Brandstetter 11 May 2012 в 03:44
поделиться