Mam zestaw danych adresów e-mail i dat, w których te adresy e-mail zostały dodane do tabeli. Może istnieć wiele wpisów adresu e-mail dla różnych dat. Na przykład, jeśli mam zestaw danych poniżej. Chciałbym uzyskać datę i liczbę różnych e-maili, które mamy między wspomnianą datą a 3 dniami.Zapytanie o liczbę różnych wartości w kroczącym zakresie dat
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]
Wynik zestaw będzie wyglądać mniej więcej tak, jeśli używamy okres dat 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
mogę uzyskać wyraźną rachubę zakres dat za pomocą poniższego zapytania, ale chcą uzyskać zliczania zakresu w ciągu dnia, więc nie muszę ręcznie aktualizować zakresu dla setek dat.
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;
Pomoc jest doceniana.
To jest oznaczone PostgreSQL. W tym miejscu nie ma funkcji 'convert()'. (Cóż, istnieje funkcja 'convert()', ale jest to konwersja kodowania, a nie typów danych, jak na serwerze SQL.) Odradza się także sygnatury, a twój talent w prawym dolnym zajmuje się tym. Zobacz [tutaj] (http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed) lub [tutaj] (http://stackoverflow.com/faq#signatures). –