Andi: Statistik erstellen

Hallo Forumer!

Ich möchte aus einer Datenbank eine Statistik generieren.
In meiner Datenbank werden die Zugriffe pro Tageszeit abgespeichert. Nun möchte ich pro Stunde die Zugriffe zählen also von 11:00-12:00 Uhr und von 13:00-14:00 Uhr usw.

Habe aber gar keine Plan wie ich das anstellen soll. Der Datentyp in der Datenbank is datetime.

Danke für jede Hilfe.

Grüsse
Andi

  1. Halihallo Andi

    Ich möchte aus einer Datenbank eine Statistik generieren.
    In meiner Datenbank werden die Zugriffe pro Tageszeit abgespeichert.

    Das ist IMHO Speicherverschwendung, warum brauchst du sie derart
    tief aufgeschlüsselt? - Würde es nicht reichen, alle Daten stündlich
    zusammenzufassen?

    Nun möchte ich pro Stunde die Zugriffe zählen also von 11:00-12:00 Uhr und von 13:00-14:00 Uhr usw.

    Welches RDBMS?

    In etwa so:

    SELECT HOUR(rep_datetime), AVG(rep_pageviews)
       FROM pageviews_table
       GROUP BY HOUR(rep_datetime)

    falls die Pageviews pro Stunde aufsummiert werden sollen, nimm
    SUM statt AVG, aber eine Aufsummierung macht IMHO keinen Sinn und
    ist nur verwirrend. Die wichtige Information ist: Wieviele Pageviews
    pro Stunde im _Durchschnitt_.

    Viele Grüsse

    Philipp

    --
    M$: Patches - don't.
    1. Hi Hasenfratz!

      Ich habs mal so probiert aber deine Query ist noch besser:

      SELECT COUNT(*)
      FROM Stat
      WHERE CSDate > '2004-05-12 09:44:11'
        AND DATE_FORMAT(CSDate,"%H:%i:%s")  BETWEEN '12:00:00' AND '13:00:00'
      GROUP BY RID

      Danke
      Andi

      1. Halihallo Andi

        Hi Hasenfratz!

        Mein Name ist Philipp, oder ein 'Herr' vor 'Hasenfratz'.

        SELECT COUNT(*)

        Du speicherst jeden einzelnen Zugriff auf die Seite? - Damit wirst
        du schnell an Grenzen kommen, zumal ich auch vermute, dass bei jedem
        Zugriff eine Datenbankverbindung geöffnet und geschlossen wird...

        FROM Stat
        WHERE CSDate > '2004-05-12 09:44:11'
          AND DATE_FORMAT(CSDate,"%H:%i:%s")  BETWEEN '12:00:00' AND '13:00:00'
        GROUP BY RID

        Geht es lediglich um 12-13, oder um eine ganztägliche Aufschlüsselung
        jeder Stunde? - Dann macht ein GROUP BY RID, HOUR wesentlich mehr
        Sinn, als jede Stunde separat abzufragen (24 Queries kosten Zeit und
        schaffen redundante Abfragen in der Datenbank).

        Viele Grüsse

        Philipp

        --
        M$: Patches - don't.
  2. Hi

    Für solche Auswertungen sind die Funktionen MAX, MIN, AVG, SUM und COUNT sehr nützlich, sowie die GROUP BY-Klausel mit HAVING-Einschränkung. Je nach DBMS kann die Syntax aber varieren.

    FG

    Tom2

    --
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    ss:| zu:) ls:& fo:) de:] va:) ch:] sh:( n4:& rl:° br:> js:| ie:% fl:( mo:}