WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 07.12.2006, 11:49   #1
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard SQL-Query für Counter

Ich suche das SQL-Statement um die Anzahl an Einträgen von einem Tag zu bekommen.
Also der Tag an dem die meißten Benutzer online waren.
Tabelle:
Counter_ID (PK), Counter_Time, Counter_IP, Counter_Referer

ich denk das würde irgendwie mit SELECT MAX(Count_ID) WHERE und dann was mit BETWEEN aber wie genau weiß ich ned.
Counter_Time ist als Unixtimestamp angegeben.
Potassium ist offline   Mit Zitat antworten
Alt 07.12.2006, 11:53   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

select count(date (wo auch immer das Datum drinn sein mag)) as hits from was auch immer
group by date(wo auch immer das Datum drinn sein mag) order by hits;

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 07.12.2006, 12:10   #3
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

danke erstmal.
"wo auch immer das Datum drinn sein mag" ?
wie soll ich das verwirklichen?
Potassium ist offline   Mit Zitat antworten
Alt 07.12.2006, 17:07   #4
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

Zitat:
wie soll ich das verwirklichen?
da bei dir die Daten schon zu bestehen scheinen, wirst du ja hoffentlich die Zeitpunkt der Counterauslösung in einem Datum+Zeit Format gespeichert haben von welchem du das Datum rauszuholen hast, schließlich wirst du ja kaum an einer Auswertung pro ms interessiert sein, oder?

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 08.12.2006, 17:33   #5
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Keine Ahnung wie performant das ist, erste Lösung dir mir eingefallen ist:

Um zb. die Zugriffszahl für jeden Tag auszuwerten:
SELECT DATE_FORMAT( SpalteDatum, '%d.%m.%Y' ) , count( SpalteDatum )
FROM datumstabelle
GROUP BY DATE_FORMAT( SpalteDatum, '%d.%m.%Y' )
ORDER BY SpalteDatum

Wenn du für Stunde/Woche/Monat/Jahr/was-auch-immer auswerten willst, musst du den Pattern im Date_Format ändern, siehe hierzu:
http://dev.mysql.com/doc/refman/4.1/...functions.html

mfg T.
T.dot ist offline   Mit Zitat antworten
Alt 14.12.2006, 10:38   #6
gorie
Master
 
Benutzerbild von gorie
 
Registriert seit: 31.08.2003
Ort: Velden
Alter: 41
Beiträge: 615


gorie eine Nachricht über ICQ schicken gorie eine Nachricht über Skype™ schicken
Standard

Ich wäre für eine etwas kürzere Variante

"SELECT COUNT(*) c, SUBSTR(Counter_Time, 1,10) t ".
"FROM `tabelle` ".
"GROUP BY TO_DAYS(Counter_Time) ". "ORDER BY c ASC "

sofern Counter_Time als Datetime gespeichert ist, sonst bekommst für das substr nix richtiges
gorie ist offline   Mit Zitat antworten
Alt 14.12.2006, 19:30   #7
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

Das Datum ist als UNIX-Time stamp (int) gespeichert!
Potassium ist offline   Mit Zitat antworten
Alt 14.12.2006, 21:51   #8
gorie
Master
 
Benutzerbild von gorie
 
Registriert seit: 31.08.2003
Ort: Velden
Alter: 41
Beiträge: 615


gorie eine Nachricht über ICQ schicken gorie eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von Potassium
Das Datum ist als UNIX-Time stamp (int) gespeichert!
dann musst du einfach das SUBSTR(Counter_Time, 1,10) dementsprechend anpassen

klappt der Ausdruck ansonst?
gorie ist offline   Mit Zitat antworten
Alt 19.12.2006, 13:14   #9
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard

habs mal kurz getestet, so klappt es mit unix timestamps:

PHP-Code:
$sql "SELECT COUNT(*) AS c FROM deine_tabelle GROUP BY DATE_SUB(FROM_UNIXTIME(dein_unix_timestamp,'%Y-%m-%d'),INTERVAL 1 DAY)"
zählt alle timestamps die am selben tag erstellt wurden, wie du es wolltest.
iG0r ist offline   Mit Zitat antworten
Alt 19.12.2006, 13:45   #10
gorie
Master
 
Benutzerbild von gorie
 
Registriert seit: 31.08.2003
Ort: Velden
Alter: 41
Beiträge: 615


gorie eine Nachricht über ICQ schicken gorie eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von iG0r
habs mal kurz getestet, so klappt es mit unix timestamps:

PHP-Code:
$sql "SELECT COUNT(*) AS c FROM deine_tabelle GROUP BY DATE_SUB(FROM_UNIXTIME(dein_unix_timestamp,'%Y-%m-%d'),INTERVAL 1 DAY)"
zählt alle timestamps die am selben tag erstellt wurden, wie du es wolltest.
tut das selbe wie mein ausruck...
gorie ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:33 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag