2010-06-23 6 views
1

아마도 아주 기본적인 SQL 쿼리와 관련하여 도움이 필요합니다. 특정 where 절과 일치하는 고유 한 레코드의 수를 선택하려고합니다.SQL 고유 쿼리 - 도움이 필요합니다.

본질적으로, 나는 날짜 x와 y 사이에 로그인 한 고유 사용자 수를 찾으려고합니다. 사용자가 해당 날짜 사이에 두 번 이상 로그인 한 경우 한 번만 계산하면됩니다.

데이터는 다음과 같은 :

id | user_id | lastLogin 
1 | 100  | 2010-06-23 10:00:00 
2 | 101  | 2010-06-23 10:05:00 
3 | 100  | 2010-06-23 11:00:00 

감사합니다!

답변

1

가 여기에 또 다른 옵션을

SELECT COUNT(user_id), user_id, MAX(lastLogin) 
FROM login_table 
WHERE lastlogin BETWEEN @start AND @end 
GROUP BY user_id 

있어

select count(distinct user_id) 
from login_table 
where lastlogin between @startdatetime and @enddatetime 
0

Distinct SQL 연산자를 사용하십시오.

select distinct user_id from UsersLoggedIn where lastLogin >= '2010-06-23 10:00:00' and lastLogin <= '2010-06-23 11:00:00' 

당신은 사용자의 수를 얻을 수있는 수에 그것을 포장 할 수있다.

select count(*) from (select distinct user_id from UsersLoggedIn where lastLogin >= '2010-06-23 10:00:00' and lastLogin <= '2010-06-23 11:00:00') x 
1

시도 :

SELECT COUNT(DISTINCT user_id) FROM table WHERE lastLogin BETWEEN .... 
+0

매우 큰 테이블과 Microsoft SQL Server의 경우 SQL은 변수와 비교할 때 속도가 느리기 때문에 날짜 변수를 사용하여 작성된 리터럴로 동적 SQL을 실행하는 것이 더 빠릅니다. 즉, 변수가 같은 날짜로 설정된 경우에도 "where lastLogin between @ var1 AND @ var2"는 "WHERE lastLogin BETWEEN '2010-01-01 AND'2010-05-01 '보다 느립니다. – Zugwalt

0

당신이 할 수있는 일처럼 이렇게하면 로그인 수, 마지막 로그인을 얻을 것이다 날짜도.

관련 문제