2012-02-13 85 views
0

由於我最近推出了一個播客,我想分析我們的Downloaddata。但有些客戶似乎發送了多個請求。所以我只希望每15分鐘爲每個IP和用戶代理計算一次請求。我能想到的最好的事情是以下查詢,它每小時對每個IP和User-Agent計算一次請求。任何想法如何在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分鐘有DISTICT查詢,或者計算的數量每隔15分鐘。 如果您決定扔掉數據,所以它永遠不會被分析。 快速和簡單的是剛剛的日期,並有一個int的列是15分鐘的時間,當前時間 小時部件* 4 +分部分/ 4

日期部分功能是您要查找的內容。事情是每次你想記錄,你必須檢查他們是否在15分鐘內。額外的工作,額外的複雜性和更少/質量較差的數據...

0

MINUTE(date)/15會給你一刻鐘的時間(0-3)表。確保日期是唯一的(或確保UNIX_TIMESTAMP(date)/(15*60)是唯一的)。