每天独特的行数

时间:2011-06-20 08:37:29

标签: sql-server group-by datepart

我需要获取一天内登录我网站的用户电子邮件地址列表。

该列表可能包含重复的电子邮件地址,但每天不得超过一个。

我需要获取这个数据一周。

我有一个表,其中包含每个成功登录的记录,如下所示。

[ID], [LOGIN_EMAIL], [LOGIN_TIME]

以下查询获取了本周的整个数据集,但是我需要每天将其过滤为一个电子邮件地址并获取本周的整个列表?

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

4 个答案:

答案 0 :(得分:2)

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)

答案 1 :(得分:0)

使用group by Day([LOGIN_TIME]), [LOGIN_EMAIL]

答案 2 :(得分:0)

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

您可能需要将登录时间更改为日期格式

答案 3 :(得分:0)

   select DISTINCT CONVERT(VARCHAR(10), LOGIN_TIME, 102) as LogDate, login_email 
   from user_logins WHERE ...