2013-01-25 3 views
2

이 큰 테이블 T 부분을 가지고 있습니다.주 단위로 그룹

+---------------+------------+ 
| session_id | visit_time  | 
+---------------+------------+ 
| 4f89cebc109f9 | 1334431476 | 
| 4f89cf283d21c | 1334431528 | 
| 4f89cf283d21c | 1334431534 | 
| 4f89cf3b350a6 | 1334431547 | 
| 4f89cf42ab640 | 1334431554 | 
+---------------+------------+ 

저는 평일에 session_id의 번호를 찾고 싶습니다. Session_id가 기본 키가 아닙니다. session_id이 같은 일요일에 visit_time이있는 경우 같은이 바르게 하나를 계산하지만 그 때, 1로를 계산

select count(distinct(session_id)) from T group by weekday(from_unixtime(time)) 

그러나 visit_time 두 개의 서로 다른 일을 가지고 있기 때문에 session_id 같은 경우 작동하지 않습니다 그래서 시도했다.

예상되는 일 : sun, mon 등과 같이 방문 일 수를 알고 싶습니다. 두 개의 다른 일요일에 session_id를 방문한 경우 두 번 계산되지만 동일한 일요일 인 경우 단지 1 카운트. 그래서 어떻게 MySQL에서 할 수 있습니까?

+0

WEEKDAY의 내가, 당신이 일주일에 의해 ... 결과를 얻을 그룹 싶어 무슨 요일을 이해하지 않아요? –

+0

DATE_FORMAT을 보시오 – Strawberry

+0

"평상시 session_id의 번호를 찾고 싶습니다"라는 기대 결과에 따르면 "동일한 session_id에 두 개의 다른 일요일에 visit_time이 있으면"그 session_id에 대해 1이됩니다. day-wise의'session_id' 숫자를 찾고 싶습니까? – Oswald

답변

4

사용 WEEK 대신

SELECT WEEK(FROM_UNIXTIME(time)) WeekNo, 
     DATE_FORMAT(FROM_UNIXTIME(time),'%a') WeekName, 
     COUNT(DISTINCT(session_id)) 
FROM T 
GROUP BY WEEK(FROM_UNIXTIME(time)), 
      DATE_FORMAT(FROM_UNIXTIME(time),'%a') 
관련 문제