2014-12-27 2 views
0

내 응용 프로그램에 사용자의 활동 표가 있으며 집계 2 분 동안 표시해야합니다. 범위.mysql - 2 분으로 집계 결과를 얻습니다. 범위

id datetime    userid activity 
-- ------------------- ------ -------- 
1 2014-27-12 02:10:57 1  'read' 
2 2014-27-12 02:10:59 1  'ok' 
3 2014-27-12 02:11:02 1  'write' 
4 2014-27-12 02:13:03 1  'write' 
5 2014-27-12 02:15:06 1  'write' 
6 2014-27-12 02:15:08 1  'ok' 
7 2014-27-12 02:17:07 1  'read' 
8 2014-27-12 02:18:01 1  'read' 
9 2014-27-12 02:18:02 1  'read'  
10 2014-27-12 02:18:05 1  'read'  
11 2014-27-12 02:18:25 1  'read'  
12 2014-27-12 02:21:09 1  'read'  

다음과 같이 2 개의 미니 범위가 필요합니다.

userid id datetime (min)  datetime (max)  count 
------ -- ------------------- ------------------- ----- 
1  1 2014-27-12 02:10:57 2014-27-12 02:11:02 3     
1  4 2014-27-12 02:13:03 2014-27-12 02:15:08 3 
1  7 2014-27-12 02:17:07 2014-27-12 02:18:25 5 
1  12 2014-27-12 02:21:09 2014-27-12 02:21:09 1 

누구든지 설명 할 수 있습니까? 당신은 aggrigate 무엇을 의미합니까

+0

? 그게 뭐야? –

+0

두 번째 행 결과가 잘못되었습니다. '2 : 13 : 03'과 '2 : 15 : 08'사이에 2 분 이상이 걸립니다. – Barmar

답변

1
SELECT userid, min(id) AS id, 
     MIN(datetime) AS `datetime (min)`, MAX(datetime) AS `datetime (max)`, 
     COUNT(*) AS count 
FROM activity 
GROUP BY userid, FLOOR(UNIX_TIMESTAMP(datetime)/120) 

DEMO

관련 문제