2011-11-22 4 views
2

우선 필드 내 날짜 형식은 내가 할 때 ID, 도메인 안타로 구성된 테이블이 TIMESTAMP선택 값은

입니다.

이제 조회수를 데이터베이스에 삽입하면 10 분마다 분석 API가 중단됩니다. 그래서이 테이블의 내용이 지난 6 시간 동안 데이터를 10 분 간격으로 채워되면

id=1, domain=test.com, hits=930, when=2011-11-22 16:00:22; 

id=2, domain=test2.com, hits=134, when=2011-11-22 16:10:22; 

, 나는 각 시간 각 도메인에 대한 히트 수를 찾으려면입니다 . 그래서 :

매 10 분마다 삽입되기 때문에 시간당 6 개의 행이있을 것입니다. 각 시간의 총 히트 수는 어떻게 검색합니까?

오전 1시 39 분에 현재 통계를 가져 오려면 오후 1시 10 분, 1시 20 분, 1시 30 분부터 모든 조회수를 가져올 수 있어야합니다.

DO 그래프를 (1 시간 전, 2 시간 전, 3 시간 전 등) 표시했기 때문에 현재 시간을 사용하여 매 시간마다 실행하는 6 개의 별도의 MySQL 쿼리가 필요합니다. 이것을 달성하는 더 쉬운 방법?

제게 감사드립니다.

답변

2

당신은

select domain, date_format(when, '%Y-%m-%d %I%p') hour, sum(hits) 
from table group by domain, hour 

편집을 시도 할 수 : 나는 AM/PM 12 시간 시계 %I%p 24 시간 시계 %H에서 포맷을 변경, 만약 당신이 원하는 것처럼 보이기 때문에.

EDIT2 : 단지별로 그룹화 당신이 원하는 마지막 6 시간이라면 얼마나 많은 시간 전 히트했다, 당신은 (전체 시간으로 그룹에 추가 DATE_FORMAT)

select domain, hour(timediff(date_format(now(), '%Y-%m-%d %H'), 
    date_format(when, '%Y-%m-%d %H'))) hours, sum(hits) 
from table 
where hours < 7 
group by domain, hours 
+0

감사합니다 더 나을 수 있습니다 당신! 이것은 적절한 방법 인 것 같습니다. 매시간마다 보여줄 것입니까? 지난 6 시간으로 제한 할 여지가 있습니까? –

+0

@ 마이클 : 내 기쁨. 첫 번째 것은 ISO 날짜와 12 시간 시계를 제공하지만 제한은 없습니다. 두 번째 쿼리는 히트가 나타난 시간의 마지막 6 시간과 그룹을 보여줍니다. – flesk

+0

id = 1, hits = 450 id = 2, hits = 520이므로 id가 일정하므로 히트가 일정하다는 것을 잊어 버렸습니다. 1 => 2 (10 분), 10 분에 70 안타가있었습니다. 어떻게이 일을 끝낼 수 있습니까? –