2016-08-03 2 views
0

의 내가 내 테이블에 다음 데이터를 데 생각해 보자 :날짜별로 그룹화하는 방법?

User id date time 
User1. 28-JUL-16 06:14:56 
User1. 28-JUL-16 04:12:12 
User2. 28-JUL -16 05:10:45 
User3. 30-JUL-16 03:10:12 

나는 현명한 날짜에 사용자의 수를 찾고 싶어요. 여기 좀 도와주세요!

+0

그룹에서 시간 부분을 제외시키는 데 어떤 어려움이 있습니까? 별개의 사용자를 세우고 있습니까, 아니면 매일 각 사용자의 모든 모습을 보입니까? –

답변

2

the trunc() function을 사용하여 시간 부분을 무시할 수 있습니다. 기본값은 시간 부분을 자정으로 변환하는 것입니다. 그런 다음 그룹화 할 수 있습니다. 한 번 n은 같은 날보다 사용자가 더 많은 계산하려면이 명확하지 않다으로

with your_table (user_id, date_time) as (
    select 'User1.', to_date('28-JUL-16 06:14:56', 'DD-MON-RR HH24:MI:SS') from dual 
    union all select 'User1.', to_date('28-JUL-16 04:12:12', 'DD-MON-RR HH24:MI:SS') from dual 
    union all select 'User2.', to_date('28-JUL-16 05:10:45', 'DD-MON-RR HH24:MI:SS') from dual 
    union all select 'User3.', to_date('30-JUL-16 03:10:12', 'DD-MON-RR HH24:MI:SS') from dual 
) 
select to_char(trunc(date_time), 'DD-MON-RR') as date_only, count(distinct user_id) 
from your_table 
group by trunc(date_time); 

DATE_ONLY       COUNT(DISTINCTUSER_ID) 
------------------ --------------------------------------- 
28-JUL-16            2 
30-JUL-16            1 

것은 내가 distinct 포함했다; 그렇게하면 그냥 제거하십시오.

select to_char(trunc(date_time), 'DD-MON-RR') as date_only, count(user_id) 
from your_table 
group by trunc(date_time); 

DATE_ONLY         COUNT(USER_ID) 
------------------ --------------------------------------- 
28-JUL-16            3 
30-JUL-16            1 
관련 문제