2016-08-24 49 views
1

我有一個名爲logvisit與領域,包括IP(VARCHAR(30))日期(日期時間)表如何選擇不同的IP每天

ip date 
1.1 2016-08-23 00:05:40 
1.1 2016-08-24 00:05:15 
1.1 2016-08-24 00:05:20 
1.2 2016-08-22 00:01:00 
1.2 2016-08-22 00:00:30 
1.2 2016-08-23 00:01:00 

編輯:我想按DAY選擇所有不同的IP。一個IP可以有幾天(如果用戶連續三天),一天可以有幾個IP(因爲我有一個以上的用戶)。我只是不想在同一天使用同一個IP。

預期輸出(1個IP/1天):

ip day 
1.1 2016-08-23 
1.1 2016-08-24 
1.2 2016-08-22 
1.2 2016-08-23 

我發現這個線程SQL group by day, with count所以作爲一個開始,我嘗試:

SELECT 
    Convert(char(8), date, 112), 
    count(distinct ip) 
FROM logvisit 
GROUP BY Convert(char(8), date, 112) 

這給了我一個意外的「語法錯誤附近112 ),計數(獨特的ip「..

回答

1

你需要按雙方ip & date

SELECT 
    DATE(date) AS d, 
    count(ip) 
FROM logvisit 
GROUP BY d,ip 

注:Date(time_stamp/datetime)將提取的日期部分。


如果你想算每天的特定IP,然後下面的查詢將是一個用途:

SELECT 
    DATE(date) AS d, 
    count(distinct ip) AS dayWiseDistinctIpCount 
FROM logvisit 
GROUP BY d 

編輯:

爲了獲得不同的對<ip,day>

SELECT 
DISTINCT ip, 
DATE(date) AS day 
FROM logvisit 
+0

對不起,我誤導了你。你的答案在語法上是正確的,但我只有一天的IP。我需要的是所有獨特的ip,每天不僅僅是每個不同日期的一個ip(請參閱我的後期編輯) – Vincent

+1

然後查看編輯部分下的查詢。 – 1000111

+0

這是完美的 – Vincent

0

嘗試類似這樣:

SELECT id, DATE(`date`) AS day, COUNT(DISTINCT ip) AS total_visits 
FROM logvisit 
GROUP BY DATE(`date`); 
+0

對不起,我誤導了你。你的答案在語法上是正確的,但我只有一天的IP。我需要的是所有獨特的IP,每天不只一個IP每個不同的日子(請參閱我的編輯後) – Vincent

1
SELECT DISTINCT ip, DATE(DATE) as day FROM logvisit GROUP BY DATE(DATE),ip