2012-04-02 20 views
1

Ich baute eine Tabelle in meiner Datenbank, die die Login-Nummer und einen Zeitstempel bei erfolgreicher Anmeldung auf der Website einfügt.Zählen der Anzahl der Tage pro Monat eingeloggt

Ich bin das Einfügen der Daten über UNIX_TIMESTAMP

Ich brauche jetzt eine Abfrage zu erstellen, um die Anzahl der Anmeldungen für jeden Benutzer in einem bestimmten Monat zu zählen .. der Kicker ist, dass ich nur die Anzahl der Tage verfolgen mag dass der Benutzer sich in einem bestimmten Monat angemeldet hat, nicht die tatsächliche Anzahl der Login-Zähler.

Dies ist die Abfrage, die ich mit gestartet haben, aber ich nicht eine Zählung der gesamten Anmeldungen benötigen, nur eine Anzahl von Tagen pro Monat, die jeder Benutzer angemeldet:

SELECT login, COUNT(DAY(FROM_UNIXTIME(datestamp))) 
FROM logincount 
GROUP BY login 

Antwort

1

Ich glaube, dass Sie COUNT(DISTINCT) wollen.

Auch, wenn Sie eine Zählung pro Monat wollen, können Sie die MONTH Funktion in Ihre SELECT und GROUP BY

SELECT 
    login, 
    MONTH(FROM_UNIXTIME(datestamp)) AS MonthOfYear, 
    COUNT(DISTINCT DAY(FROM_UNIXTIME(datestamp))) AS DaysInMonth 
FROM logincount 
GROUP BY login, MONTH(FROM_UNIXTIME(datestamp)) 
0

hinzufügen können Sie verwenden:

SELECT login,count(a) FROM (SELECT login, DAY(FROM_UNIXTIME(datestamp) AS a FROM logincount) sq GROUP BY login; 

die Anzahl der Tage, um für jede Anmeldung

Verwandte Themen