2009-08-22 5 views
0

나는 현재 1 년 동안 내 사이트 방문자를 선택하려고합니다.MySQL 개월 사이에 행을 가져 오기

모든 IP/user_agent 조합마다 분당 행이 추가됩니다. 조회수와 순 방문자수를 추적합니다.

내 방식은 다음과 같습니다

CREATE TABLE `stats` (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `domain` varchar(40) NOT NULL, 
    `ip` varchar(20) NOT NULL, 
    `user_agent` varchar(255) NOT NULL, 
    `domain_id` int(11) NOT NULL, 
    `date` timestamp NOT NULL default CURRENT_TIMESTAMP, 
    `referrer` varchar(400) default NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

이 지금은 해당 연도의 모든 달 동안 모든 고유 방문자를 좀하고 싶습니다.

하지만 고유 방문자 만 24 시간 동안 고유하게 만들고 싶습니다. 그래서 한달 내내.

date> = NOW() - INTERVAL 1 MONTH)를 사용할 수 있지만 2009 년 1 월 이후 2008 년 12 월으로 이동합니다. 따라서 주어진 연도의 월만 표시해야합니다.

한 달 동안 동일한 기능을 수행하는 기능이 있습니까 (주당 방문자 수를 계산하므로 4 번째 행부터 4 번째 행까지 4 행).

감사합니다.

답변

1

각 사이트 당 월별 순 방문자수가 일까요? 이 같은 뭔가 작업을해야합니다 : 하루

SELECT COUNT(*), domain_id, m, y FROM 
(
    SELECT ip, user_agent, COUNT(ID) AS hits, domain_id, 
     DAY(date) as d, MONTH(date) as m, YEAR(date) as y 
    FROM `stats` 
    GROUP BY domain_id, ip, d, m, y 
) AS tb 
GROUP BY tb.m, tb.y 

첫째 그룹을 서브 쿼리에, 다음 그룹을 다시 월별로 주변 쿼리.

의도가 무엇인지 완전히 모르겠으나 목적에 맞게이 기술을 적용 할 수 있어야합니다.

(편집 : 추가 연도 구성 요소)

+0

감사합니다. Mick! 위대한 작품! 시간 (지난 24 일)과 지난 7 일 동안 동일한 작업을 수행 할 수있는 방법이 있습니까? 감사합니다. –

+0

추가 열을 추가해야하지만 'DAY', 'MONTH'및 'YEAR'와 같은 'HOUR'기능이 있습니다. – Mick

관련 문제