2011-08-04 4 views
-1

사이트 로그는 사용자가 로그인 할 때마다 날짜 시간 스탬프를 기록합니다. 사용자가 로그인 한 일 수를 계산하는 쿼리가 필요합니다. [DateTime] 필드에서 카운트하는 것이 작동하지 않습니다 사용자가 하루에 두 번 이상 로그인 할 수 있기 때문입니다. . 그래서 나는 단지 그들이에 로그인 한 별개의 일을 계산하는 방법으로 난처한 상황에 빠진 기본적으로, 우리가 생산하는 쿼리가 필요합니다사용자가 로그인 한 일 수를 계산하는 쿼리 작성 방법은 무엇입니까?

예를 들어
UserID 
NumberOfDaysLoggedIn 

, 사용자 존 (ID 33)과 같은에서의 로그인 :

우리가 될 원하는
3/26/2008 12:20 PM 
3/26/2008 5:58 PM 
3/27/2008 11:46 AM 

결과 :

UserID NumberofDaysLoggedIn 
    33      2 

모든 아이디어를 생산하는 그 오라클 쿼리를 사용하여 결과. 어떤 아이디어라도 제안 해주세요.

답변

2

같은 것을해야합니다.

select userID, count(distinct trunc(date)) 
from table 
3

날짜를 반올림 한 다음 별개로 구분하십시오.

일수는 trunc()입니다.

당신이 그런 식으로 작업을 수행 할 수 있습니다

select count(*) 
from (select name, trunc(date) 
     from table 
     group by name, trunc(date)) 
where name = 'John'; 

을 당신이 그런 식으로 그것을 할 수있는 각 사용자에 대한 결과를 얻으려면 :

select name, count(*) 
from (select distinct name, trunc(date) 
     from table) 
group by name; 
0

당신은 별개의 날짜를 셀 수를, 무언가를 따라

select count(distinct trunc(t.date)) 
    from table t 
where t.userId = some user id 

trunc() 날짜를 날짜 값으로 자르지 만 양식을 사용할 수도 있습니다. 특정 측정 단위로 자르기위한 매개 변수에서.

0
with t as 
(
select 1 as id, sysdate as d from dual 
union all 
select 1 as id, sysdate - 0.5 as d from dual 
union all 
select 1 as id, sysdate - 0.6 as d from dual 
union all 
select 1 as id, sysdate - 1 as d from dual 
union all 
select 2 as id, sysdate - 1 as d from dual 
) 
select id, count(distinct trunc(d)) 
from t 
group by id 
; 
관련 문제