2009-08-22 9 views
0

今年の月に自分のサイトの訪問者を選択しようとしています。MySQL月間の行数を取得する

異なるIP/user_agentの組み合わせごとに1分あたりの行が追加されます。ヒットとユニークビジターをトラッキングする。

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時間ユニークにしたいと考えています。 1ヶ月間そうではありません。

date> = NOW() - INTERVAL 1 MONTH)を使用することは可能ですが、2009年1月以降2008年12月にジャンプします。したがって、指定した年の月のみを表示する必要があります。

1ヶ月間同じ機能を実行する機能があります(1週間あたりの訪問ユーザー数をカウントするので、最初の4週間までは4行になります)。

ありがとうございます!

答えて

1

月ごとにサイトごとにユニークビジターの番号を取得しますか?このような 何か作業をする必要があります: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

ありがとうミック!よく働く! 時間(過去24時間)と過去7日間同じことを行う方法はありますか? ありがとう –

+0

余分な列を追加する必要がありますが、 'DAY'、' MONTH'、 'YEAR'のような' HOUR'関数があります。 – Mick

関連する問題