0

今年の月ごとのサイトの訪問者を選択しようとしています。

異なる IP/user_agent の組み合わせごとに、1 分ごとに 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 行)?

ありがとう!

4

1 に答える 1

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

最初にサブクエリで日ごとにグループ化し、次に周囲のクエリで月ごとにグループ化します。

あなたの意図が完全にはわかりませんが、あなたはこのテクニックをあなたの目的に適応させることができるはずです。

(編集:クエリに年コンポーネントを追加)

于 2009-08-22T09:45:33.217 に答える