2012-02-13 15 views
0

私は最近Podcastを公開して以来、私はダウンロードデータを分析したいと思っていました。しかし、一部のクライアントは複数の要求を送信するようです。だから私は、IPとUser-Agentごとに1つのリクエストを15分ごとに数えたかっただけです。私が思いつくことができる最も良いことは、IPとUser-Agentごとに1つのリクエストを1時間ごとに数える次のクエリです。任意のアイデアMySQLでその問題を解決する方法?MySQL:Datefieldの精度

SELECT episode, podcast, DATE_FORMAT(date, '%d.%m.%Y %k') as blurry_date, useragent, ip FROM downloaddata GROUP BY ip, useragent 

これは私が

CREATE TABLE `downloaddata` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `date` datetime NOT NULL, 
    `podcast` varchar(255) DEFAULT NULL, 
    `episode` int(4) DEFAULT NULL, 
    `source` varchar(255) DEFAULT NULL, 
    `useragent` varchar(255) DEFAULT NULL, 
    `referer` varchar(255) DEFAULT NULL, 
    `filetype` varchar(15) DEFAULT NULL, 
    `ip` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=216 DEFAULT CHARSET=utf8; 

答えて

1

個人的には、すべてのリクエストを収集してから15分ごとに1つずつ、または15分ごとにカウントすることをおすすめします。 データを放棄すると判断された場合は、分析することはできません。 日付だけで簡単に15分の整数列を持ちます 現時点の時間部分* 4 +分部分/ 4

DatePart関数はルックアップしたいものです。あなたが記録したい時はいつでも、あなたは15分の時間内にあるかどうかをチェックする必要があります。余分な作業、余分な複雑さ、低/低品質データ...

0

MINUTE(date)/15を持っているテーブルはあなたに(0-3)、15分を与えるです。日付とともに一意であることを確認してください(またはUNIX_TIMESTAMP(date)/(15*60)が一意であることを確認してください)。