2012-06-28 3 views
4

가능한 복제를 사용하여 시간 (날짜) 레코드의 수를 계산하는 방법 :
Group records by timemysql을 - SQL

나는 웹 페이지 요청을 기록 MySQL의 테이블을 가지고있다.

시간당 요청 수를 출력하는 sql을 작성하고 싶습니다.

INPUT: 
timestamp    browser 
------------------- ------- 
2012-06-28 15:06:14 chrome 
2012-06-28 15:12:15 IE6 
2012-06-28 16:32:16 IE7 

OUTPUT: 
timestamp    count 
------------------- ------- 
2012-06-28 15:00:00 2 
2012-06-28 16:00:00 1 

내 첫 번째 단계는 datetime 필드를 잘라내어 그룹화 할 수 있다고 생각합니다. 검색 중 시간을 반올림하는 몇 가지 예제를 찾았으나 잘리지는 않습니다.

+0

참조 : HTTP : //stackoverflow.com/questions/10110341/group-records-by-time –

+0

그 질문은 정확한 복제물이 아니며 15 분 단위로 그룹화됩니다. 울부 짖다. 추가로, 다른 질문에 대한 답변에 사용되지 않는 date_format 함수를 사용하기 때문에 여기의 답변도 중복되지 않습니다 ... 이들을 병합하려면 질문과 답변을 모두 수정해야합니다. – Eric

답변

5
select count(no_of_requests) from table group by date(datetime_field) , hour(datetime_field) 
1

출력을 얻으려면 DATE() 및 HOUR() 함수로 그룹화 할 수 있어야합니다.

4

, 테이블 이름으로 ts_table과 타임 스탬프 열 이름으로 ts을 가정하면 FORMATTED_TIMESTAMP

+0

+1 날짜도 고려하십시오. –

+0

다른 제안을 사용할 수도 있지만 두 기능을 모두 사용하여 그룹화해야합니다. 날짜 별 그룹 (datetimefield), 시간 (datetimefield) – Ekster

3

그룹화 한 후

DATE_FORMAT(timestamp, '%Y-%m-%d %H') as formatted_timestamp 

와 날짜를 포맷하고 시도

mysql> select 
    ->  addtime(date_format(ts, '%Y-%m-%d %H'), '00:00:00') as 'during' 
    ->  , count(date_format(ts, '%Y-%m-%d %H')) as 'visit_count' 
    -> from ts_table 
    -> group by 'during' 
    -> ; 
+---------------------+-------------+ 
| during    | visit_count | 
+---------------------+-------------+ 
| 2012-06-28 15:00:00 |   2 | 
| 2012-06-28 16:00:00 |   1 | 
+---------------------+-------------+ 
2 rows in set (0.00 sec)