2016-12-21 1 views
-1

Ich kam diese Frage ein paar Tage zurück und konnte keine optimale Lösung finden. Wir haben eine folgende Tabellenstruktur zum Speichern einiger grundlegender Web-Datenverkehrsprotokolle von Benutzern, die eine bestimmte Website besuchen.SQL Web Traffic Query

Ich möchte eine einzelne Abfrage (d. H. Einzelne Select-Anweisung) abfragen. Die Gesamtzahl der Besuche und insgesamt eindeutigen Besucher (basierend auf IPAddress) und die Gesamtzahl der eindeutigen Seiten, die in den letzten 60 Tagen besucht wurden.

PS: Dies ist meine erste Frage auf dieser Seite, also vergib mir, wenn in der Frage einige Details fehlen. :)

EDIT: Ich benutze eine SQL Server-Datenbank.

+3

auch fehlt, ist Ihr Versuch, diese Abfrage zu lösen. Hast du schon etwas probiert? Außerdem haben Sie mit inkompatiblen Datenbanken beschriftet. Welche Datenbank benutzen Sie eigentlich? –

+0

Wahrscheinlich haben Sie nicht genug Spalten, um alle benötigten Daten zu erhalten. – Nurjan

+0

Ja, ich habe tatsächlich versucht, es zu lösen, aber vergebens.Ich habe es irgendwie gelöst mit mehreren Select-Abfragen alle blockiert in einem äußeren Select, aber ich denke, es könnte eine bessere Möglichkeit, es zu tun, fragen die Experten – Hexxx

Antwort

0
SELECT pageName, count(*) AS pageHits FROM tblWebtraffic GROUP BY pageName 

geben Sie Treffer pro Seite, wird eine leichte Veränderung gibt einzigartige Seite Treffer

SELECT pageName, count(DISTINCT ipAddress) AS uniquePageHits FROM tblWebtraffic GROUP BY pageName 

natürlich, das Entfernen die Gruppe, indem Sie auf Seitennamen Ihnen die gesamte Site geben trifft

SELECT count(*) AS siteHits FROM tblWebtraffic 

SELECT count(DISTINCT ipAddress) uniqueSiteHits FROM tblWebtraffic 

PS: mein erster Versuch der Antwort, also wenn etwas fehlt bitte lass es mich wissen :)

edit: Diese werden auf MS SQLServer Transact SQL arbeiten. MySQL Ich bin weniger vertraut mit, aber ich habe gerade SELECT count (Distinct fieldname) ausprobiert und es hat funktioniert edit2: danke für die Bearbeitungen - die Code-Formatierung sieht gut aus

EDIT3: Beantwortung der Frage :)

SELECT count(*) AS siteHits, count(DISTINCT ipAddress) AS uniqueSiteHits, count(DISTINCT pageName) AS uniquePages FROM tblWebtraffic WHERE DATEDIFF(d, [Date], getDate()) <= 60

+0

Wie zeigen Sie alle oben genannten mit 1 einzigen ** SELECT **, Sie haben 3 Auswahlen verwendet. Ich muss es nur mit 1 – Hexxx

+0

tun Meine schlechte - Sie können diese kombinieren, um zu bekommen, was Sie wünschen - aber ich werde das Richtige tun und die Frage beantworten :) –

+0

Entschuldigung - geben Sie einen neuen Kommentar, schalten Sie neue Zeile eingeben SELECT count (*) AS siteHits, count (DISTINCT ipAddress) AS uniqueSiteHits, Anzahl (DISTINCT pageName) AS eindeutige Seiten FROM tblWebtraffic WHERE DATEDIFF (d, [Datum], getDate()) <= 60 –