2016-08-24 8 views
1

Ich habe eine logvisit mit Feldern einschließlich ip (varchar (30)) und Datum (Datumzeit) genannt Tabelle:Wie für jeden Tag verschiedene ip wählen

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 

EDIT: Ich möchte alle eindeutigen ip bis zum Tag auswählen. Eine IP kann mehrere Tage haben (wenn der Benutzer drei Tage hintereinander kommt), und ein Tag kann mehrere IP haben (weil ich mehr als einen Benutzer habe). Ich will nur nicht die gleiche IP am selben Tag.

Erwartete Ausgabe (1 ip/1 Tag):

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

ich diesen Thread gefunden SQL group by day, with count so als Anfang hat ich versucht:

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

, die in der Nähe von 112 mir einen unerwarteten „Syntaxfehler gab), (distinct ip“..

Antwort

1

Sie müssen beide zur Gruppe von ip & date

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

Hinweis:Date(time_stamp/datetime) das Datum Teil extrahieren.


Wenn Sie die eindeutige IP pro Tag zählen wollen, dann die folgende Abfrage eine Verwendung wäre:

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

EDIT:

Um unterschiedliches Paar <ip,day> zu bekommen:

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

Sorry, ich irre dich. Ihre Antwort ist syntaktisch korrekt, aber ich habe nur eine IP am Tag. Was ich brauche, ist ALL distinct IP, für jeden Tag, nicht nur eine IP für jeden einzelnen Tag (siehe meine Bearbeitung im Beitrag) – Vincent

+1

Dann sehen Sie sich die Abfrage in Bearbeitung Abschnitt. – 1000111

+0

Das ist perfekt – Vincent

0

Probieren Sie etwas wie dies zählen:

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

Entschuldigung, ich irre dich. Ihre Antwort ist syntaktisch korrekt, aber ich habe nur eine IP am Tag. Was ich brauche, ist ALL distinct IP, für jeden Tag, nicht nur eine IP für jeden einzelnen Tag (siehe meine Bearbeitung im Beitrag) – Vincent

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