2017-02-07 2 views
0

시간이 (예 1) 인 mysql 테이블에는 로그인 및 로그 아웃 시간을 나타내는 일별 타임 스탬프가 여러 개 있습니다.분기 별 그룹화 시작 간격 차이

번째 테이블은, 실시 예 2 I이 사용자에 15 개 슬라이스로 그룹화에 기록 된 시간을 알아 내야

의 출력 저 잎 time_intervals 불린다.

예 3은 원하는 결과를 표시합니다.

예 1 (시간)

start_time  | end_time   | duration_s | user | 
---------------------------------------------------------------- 
2017-02-07 06:01:13 | 2017-02-07 07:03:19 | 3726  | x | 
2017-02-07 07:31:29 | 2017-02-07 08:00:00 | 3726  | x | 
2017............... ................... ....   . 

예 2 (time_intervals)

interval_start | interval_end  | 
-------------------------------------------- 
2017-02-07 06:00:00 | 2017-02-07 06:14:59 | 
2017-02-07 06:15:00 | 2017-02-07 06:29:59 | 
2017-02-07 06:30:00 | 2017-02-07 06:44:59 | 
2017-02-07 06:45:00 | 2017-02-07 06:59:59 | 
2017-02-07 07:00:00 | 2017-02-07 07:14:59 | 
2017............... | 2017............... 

예 3 (원하는 출력)

interval_start  | interval_start  | duration_s | user | 
---------------------------------------------------------------- 
2017-02-07 06:00:00 | 2017-02-07 06:14:59 | 826 | x | 
2017-02-07 06:15:00 | 2017-02-07 06:29:59 | 899 | x | 
2017-02-07 06:30:00 | 2017-02-07 06:44:59 | 899 | x | 
2017-02-07 06:45:00 | 2017-02-07 06:59:59 | 899 | x | 
2017-02-07 07:00:00 | 2017-02-07 07:14:59 | 199 | x | 
2017-02-07 07:15:00 | 2017-02-07 07:30:59 | 0  | x | 
2017-02-07 07:30:00 | 2017-02-07 07:44:59 | 810 | x | 

모든 종류의 도움을 주시면 감사하겠습니다. 다음과 같은

답변

0

뭔가 time_intervals 표시 할 15 개 분 간격을 보유하고 있음을 제공 작동합니다 : 흠

SELECT ti.interval_start, 
     ti.interval_end,  
     TIMESTAMPDIFF(SECOND, GREATEST(t.start_time, ti.interval_start), 
          LEAST(t.end_time, ti.interval_end)) AS duration_s 
FROM time_intervals AS ti 
LEFT JOIN time AS t 
    ON t.start_time <= ti.interval_end AND t.end_time >= ti.interval_start 
+0

을 "time_intervals가 15 개 분 간격을 보유하고 있음을 제공". – Strawberry