2012-03-12 100 views
1

如何計算每天在我的網站上有多少個唯一地址? 我的表看起來像這樣:如何計算每天有不同IP地址的行?

行名稱:ID,姓名,單位,IP_ADDRESS日期

1, 「博德之門」, 「EntityA」, 「85.221.18.251」,「2012-01- 09 17:32:52「 2」Baldur「EntityB」85.221.18.251「2012-01-09 17:32:57」 3「Baldur」「EntityB」「85.221。 18.252「,」2012-01-09 17:33:01「 4,」Baldur「,」EntityA「,」85.221.18.253「,」2012-01-10 17:33:12「 5,」芒果「 ,「EntityA」,「85.221.18.257」,「2012-01-10 17:32:52」 6,「Baldur」,「EntityB」,「85.221.18.251」,「2012-01-10 17:32: 57「 7,」芒果「,」EntityB「,」85.221.18.253「,」2012-01-11 17 :33:01「 8,」芒果「,」EntityA「,」85.221.18.251「,」2012-01-11 17:33:12「 9,」芒果「,」EntityA「,」85.221.18.253「 ,「2012-01-11 17:32:52」 10,「Baldur」,「EntityB」,「85.221.18.255」,「2012-01-11 17:32:57」 11,「芒果」,「 EntityB「,」85.221.18.254「,」2012-01-11 17:33:01「 12,」Mango「,」EntityA「,」85.221.18.251「,」2012-01-12 17:33:12「

我想沿着這些路線的東西:

SELECT date, COUNT(ip) 
FROM mytable 
GROUP BY date 

這只是給了我行與一個計數。

回答

7

你是不是按日期(意思是每天一個條目)分組,但實際時間戳,這在你的情況下可以下降到第二。您必須應用date函數從中提取實際日期。

另一方面,添加DISTINCT關鍵字來實際計算不同的ips並忽略重複的條目。

SELECT DATE(`date`), COUNT(DISTINCT ip_address) 
    FROM mytable 
    GROUP BY DATE(`date`) 
+0

嗯......這給了我只有一排.. – Steven 2012-03-12 14:15:13

+0

@Steven可能檢查一些錯別字。它在我的本地mysql數據庫運行良好,並返回4行。 – Sirko 2012-03-12 14:23:08

2

您只能得到1的計數,因爲大部分日期值本質上都是唯一的,因爲它們也有時間分量。因此,您的原始聲明嘗試按完整的日期時間進行分組,但每秒通常不會有多次點擊。

使用函數DATE()刪除時間部分,只獲取日期部分,並在COUNT()內部添加DISTINCT以僅獲取每天唯一的IP。

SELECT 
    DATE(`date`) AS ipdate, 
    COUNT(DISTINCT ip) 
FROM mytable 
GROUP BY ipdate 

得到總的(非唯一的),每天打,省略DISTINCT

SELECT 
    DATE(`date`) AS ipdate, 
    COUNT(ip) 
FROM mytable 
GROUP BY ipdate 
0

嘗試:

SELECT DATE(date), COUNT(ip) FROM mytable GROUP BY DATE(date),ip