如何获取某个日期范围内每天用户的首次登录

zap*_*poo 2 sql

我在 RDBMS 中有一个表,用于记录用户登录。用户可以在白天多次登录系统,我的应用程序会记录这些登​​录信息。
问题是,我需要编写一个查询来获取用户在 2011-04-21 到 2011-07-08 等所需日期之间每天的第一次登录

登录日志表

userID  Login Date 
guess   2011-04-21 16:46:46.000
Admin   2011-05-03 17:32:15.000
guess   2011-05-05 15:48:54.000
guess   2011-06-01 14:14:50.000
guess   2011-06-01 14:23:18.000
my_user 2011-07-08 15:42:20.000
guess   2011-07-08 16:15:08.000
guess   2011-07-08 16:19:14.000
my_user 2011-07-08 16:36:45.000
my_user 2011-07-08 16:37:41.000
my_user 2011-07-08 16:42:21.000
Run Code Online (Sandbox Code Playgroud)

查询应该给出如下结果(每天的第一次登录日期/时间)

UserID  First_Login_Date
guess   2011-04-21 16:46:46.000
Admin   2011-05-03 17:32:15.000
guess   2011-05-05 15:48:54.000
guess   2011-06-01 14:14:50.000
my_user 2011-07-08 15:42:20.000
guess   2011-07-08 16:15:08.000
Run Code Online (Sandbox Code Playgroud)

Sam*_*aan 5

SELECT UserID, MIN(Login_Date) as First_Login_Date
FROM Login
WHERE Login_Date BETWEEN inputStartDate AND inputEndDate
GROUP BY UserID, YEAR(Login_Date), MONTH(Login_Date), DAY(Login_Date)
Run Code Online (Sandbox Code Playgroud)

编辑为按用户和日期分组。您的问题并不具体,即您希望每个用户每天登录时第一次登录。我肯定此解决方案适用于 MS SQL Server 2005+,如果您需要不同的 RDBMS,请发表评论。

如果您想要更多按特定日期分组的选项,请随时查看本文。

  • @Bernhard 根据他对其他答案的回应以及他说他想要的结果集,我猜测这是 OP 的意图。问题中肯定没有说清楚。 (2认同)