Уникальные строки в день - PullRequest
2 голосов
/ 20 июня 2011

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

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

Мне нужно получить эти данные за неделю.

У меня есть таблица, которая содержит записи для каждого успешного входа в систему следующим образом.

[ID], [LOGIN_EMAIL], [LOGIN_TIME]

Следующий запрос возвращает весь набор данных за неделю, но мне нужно отфильтровать его по одному адресу электронной почты в день и получить весь список за неделю?

SELECT LOGIN_EMAIL 
FROM USER_LOGINS 
WHERE LOGIN_TIME IS BETWEEN @STARTDATE AND @ENDDATE

Ответы [ 4 ]

2 голосов
/ 20 июня 2011
SELECT   LOGIN_EMAIL,
         DATEADD(DAY, DATEDIFF(DAY, 0, LOGIN_TIME), 0) AS LOGIN_DATE
FROM     USER_LOGINS 
WHERE    LOGIN_TIME BETWEEN @STARTDATE AND @ENDDATE
GROUP BY LOGIN_EMAIL, 
         DATEADD(DAY, DATEDIFF(DAY, 0, LOGIN_TIME), 0)
0 голосов
/ 20 июня 2011
   select DISTINCT CONVERT(VARCHAR(10), LOGIN_TIME, 102) as LogDate, login_email 
   from user_logins WHERE ...
0 голосов
/ 20 июня 2011
SELECT DISTINCT LOGIN_EMAIL,LOGIN_TIME FROM USER_LOGINS WHERE LOGIN_TIME IS BETWEEN @STARTDATE AND @ENDDATE

вам может понадобиться изменить LOGIN_TIME в дневной формат

0 голосов
/ 20 июня 2011

Использование group by Day([LOGIN_TIME]), [LOGIN_EMAIL]

...