2011-08-16 5 views
2

사용자 로그인을 기록하는 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 
에 하루 먼저 로그인을 유도 할 수있는 쿼리를 작성해야

쿼리는 다음과 같은 결과 (매일 첫 로그인 날짜/시간)을 제공해야

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 
+2

RDBMS를 시도? SQL 서버/MySQL/etc –

답변

4
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) 

에디 BY 사용자와 날짜를 그룹으로 묶으십시오. 귀하의 질문은 그들이 매일 로그인 한 각 사용자의 첫 로그인을 원하는 것이 아닙니다. 다른 RDBMS가 필요한 경우이 솔루션은 MS SQL Server 2005 이상에서 작동합니다.

당신이 특정 날짜를 기준으로 그룹화에 대한 더 많은 옵션을 원하는 경우 내가 정확한 데이터베이스 시스템을 알 수 없기 때문에, 다음과 같은 일을해야 MS SQL 2008, at this article.

+0

예 이것이 내가 묻고있는 것입니다 !! Thx와 안부 !! – zapoo

+1

솔직히 말해서 질문에 "2011-04-21에서 2011-07-08과 같은 원하는 날짜 사이에 사용자의 첫 번째 로그인을 가져 오는 쿼리"라고 말하면서 한 기간 내에 첫 번째 로그인을 원한다고 생각했습니다. 로그인 날짜별로 그룹화되지 않았습니다. –

+2

@ Bernhard 나는 OP의 의도가 다른 답변에 대한 그의 답변과 그가 원하는 바의 결과 집합을 기반으로 한 것이라고 생각했습니다. 명확하게 질문에서 명확하지 않았다. –

0

봐 주시기 바랍니다 (나는 또한 가정 귀하의 질의에 대한 질문을 사용하고 있습니다.) :

declare @startDate datetime = '2011-04-21' 
declare @endDate datetime = '2011-07-08' 
SELECT UserId, MIN([Login Date]) as First_Login_date FROM LoginTable WHERE [Login date] between @startDate and @endDate group by UserId 
0

하루에 첫 번째 사용자 로그인을 찾으십시오. 오라클이 작동합니다 :

select UserID, min(Login_Date) from your_table 
WHERE Login_Date between to_date('YYYY-MM-DD', '2011-04-21') 
      and to_date('YYYY-MM-DD', '2011-07-08') 
group by UserID, to_char(Login_Date, 'YYYYMMDD'); 
0

SELECT HOUR(LOGIN_TIME), COUNT(*) FROM SESSION_DETAILS 
GROUP BY HOUR(LOGIN_TIME) 
관련 문제