2017-03-23 52 views
1

我有一個表statistics在數據庫:的MySQL,網站統計:獨特的日訪問量

CREATE TABLE `statistics` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `address` TEXT NOT NULL, 
    `ip` TEXT DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 

要獲取每天的網頁訪問我使用的是下面的查詢:

SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(*) 
FROM `statistics` 
GROUP BY 1 
ORDER BY 1 ASC 

如何修改查詢獲得IP獨有的每日訪問?

非常感謝!

回答

1

改變它來計算不同的IP地址,如以下

SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(DISTINCT `ip`) 
FROM `statistics` 
GROUP BY 1 
ORDER BY 1 ASC 

如果你要正確對待null作爲一個單一的IP,我們必須做出一個稍微不同的查詢

SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(DISTINCT `ip`) + SUM(ISNULL(`ip`)) 
FROM `statistics` 
GROUP BY 1 
ORDER BY 1 ASC 
+0

這就是我期待的對於!謝謝! –

+0

以及如何將NULL IP作爲單個IP處理?在您的提議中,NULL不計算在內。 –

+0

發表了編輯:) – user1898027

1

您可以添加IPSELECTGROUP BY,例如:

SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), IP, COUNT(*) 
FROM `statistics` 
GROUP BY 1, 2 
ORDER BY 1 ASC