MySQL Hit-Auswertung
lixx
- datenbank
0 lixx0 Vinzenz Mai0 lixx
Hallo Leute!
Ich muß eine Art Hit-Auswertung erstellen und komme beim Gruppieren nicht mehr weiter.
Bei jedem Zugriff wird in der MySQL-Tabelle ein Datensatz angelegt mit einem UNIX-Zeitstempel. Für die Darstellung der Auswertung benötige ich nun die maximale Anzahl Hits pro Tag (bzw. Woche [aber das wäre ja dann dasselbe]). Etwa - oder genau - so wie beim Webalizer (http://www.mrunix.net/webalizer/sample/usage_199905.html).
Die Datensätze so zu Gruppieren, dass sie für jeden Monat ausgegeben werden habe ich schon geschafft. Für die Maximalen Hits hätte ich etwas gefunden:
BIT_COUNT( BIT_OR( 1 << DAY( FROM_UNIXTIME( crdate ) ) ) )
Leider bin ich in Bit-Berechnungen so etwas von gar nicht firn ... und funktionieren tut es (desshalb) auch nicht.
Kann mir da wer weiterhelfen?
lg lixx
Juhu, ich hab's!
Und ich will es euch nicht vorenthalten ... vll. gibt's ja Verbesserungsvorschläge ;)
SELECT BIT_COUNT( BIT_OR( 1 << HOUR( FROM_UNIXTIME( t1.crdate ) ) ) ) AS count
FROM t1
WHERE irgendwas='dasda'
GROUP BY YEAR( FROM_UNIXTIME( t1.crdate ) ), MONTH( FROM_UNIXTIME( t1.crdate ) );
Hallo
SELECT BIT_COUNT( BIT_OR( 1 << HOUR( FROM_UNIXTIME( t1.crdate ) ) ) ) AS count
ich verstehe absolut nicht, was Deine Bit-Zählerei bewirken soll.
Warum verwendest Du nicht einfach
~~~sql
SELECT
COUNT(t1.crdate)
FROM t1
WHERE irgendwas='dasda'
GROUP BY YEAR( FROM_UNIXTIME( t1.crdate ) ), MONTH( FROM_UNIXTIME( t1.crdate ) );
Freundliche Grüße
Vinzenz
Danke für Deine Antwort.
Warum verwendest Du nicht einfach
SELECT COUNT(t1.crdate)
FROM t1
WHERE irgendwas='dasda'
GROUP BY YEAR( FROM_UNIXTIME( t1.crdate ) ), MONTH( FROM_UNIXTIME( t1.crdate ) );
Diese Abfrage würde mir die Summe aller Datensätze aus einem Monat anzeigen. Gewünscht ist aber die höchsten Zugriffe EINES Tages des Monats. Der Spitzen-Tag also. Wie bei http://www.mrunix.net/webalizer/sample/usage\_199905.html unter "Hits per Day" -> Max: 10341