neubarth: Summenfunktion

Hallo,

ich nutze mysql in Vers.5.

Auf welche Weise ermittle ich effektiv die Anzahl vorhandener Datensätze einer  Tabelle (größer 200K Datensätze) auf Monat bezogen, wenn ich nur den Timestamp als Zeitmaßstab habe?

Viele Grüße. Rolf

  1. Moin!

    Auf welche Weise ermittle ich effektiv die Anzahl vorhandener Datensätze einer  Tabelle (größer 200K Datensätze) auf Monat bezogen, wenn ich nur den Timestamp als Zeitmaßstab habe?

    Im ersten Schritt mit einem Query, der die geforderten Ergebnisse liefert. Und dann sehen wir mal weiter.

    Wo genau liegt dein Verständnisproblem? Denn du hast offenbar eines, die Lösung ist einfach zu banal, dass du da nicht von selbst drauf gekommen wärst.

    - Sven Rautenberg

    1. Wo genau liegt dein Verständnisproblem? Denn du hast offenbar eines, die Lösung ist einfach zu banal, dass du da nicht von selbst drauf gekommen wärst.

      Mir ist unklar, wie ich den timestamp in einer query aufgedröselt benutzen kann.
      Alle Datensätze in eine Ergebnissmenge einladen und hiernach aufdröseln ist kein Problem. Ich will aber bereits in der Query selber nach z.B. Montaten gruppiert zählen.

      VG, Rolf

      1. Moin!

        Wo genau liegt dein Verständnisproblem? Denn du hast offenbar eines, die Lösung ist einfach zu banal, dass du da nicht von selbst drauf gekommen wärst.

        Mir ist unklar, wie ich den timestamp in einer query aufgedröselt benutzen kann.
        Alle Datensätze in eine Ergebnissmenge einladen und hiernach aufdröseln ist kein Problem. Ich will aber bereits in der Query selber nach z.B. Montaten gruppiert zählen.

        Wenn du genau einen Monat abfragen willst, könntest du die Timestamps der Zeitpunkte "Monatsanfang" und "Monatsende" erzeugen und in den Query einbauen "WHERE timestamp BETWEEN $monatsanfang AND $monatsende".

        Gruppieren über mehrere Monate funktioniert nur, wenn du den Timestamp des Datensatzes in den Monat umrechnen lässt (und ggf. auch in das zugehörige Jahr). Dazu hat jede Datenbank ihre Funktionen - Datumsfunktionen genauer gesagt.

        Soll ich für dich mal ins Handbuch gucken, oder googelst du selbst? :)

        - Sven Rautenberg

        1. Wenn du genau einen Monat abfragen willst, könntest du die Timestamps der Zeitpunkte "Monatsanfang" und "Monatsende" erzeugen und in den Query einbauen "WHERE timestamp BETWEEN $monatsanfang AND $monatsende".

          Also DAS wollte ich selbstredend nicht. Ich schrieb doch: "effektiv".

          Soll ich für dich mal ins Handbuch gucken, oder googelst du selbst? :)

          Vielleicht Beides. Ich google auf jeden Fall mal. Aber freu mich, wenn Du auch  danach guckst. :-)

          Klar ist, dass es einfacher ginge, wenn ich die Date Time Funktion zur Verfügung hätte. Hab ich aber nicht.

          Vg, Rolf

          1. Hi,

            Klar ist, dass es einfacher ginge, wenn ich die Date Time Funktion zur Verfügung hätte. Hab ich aber nicht.

            Doch, hast du.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Doch, hast du.

              Vielleicht noch mal etwas präziser.

              Ich habe zu jedem Datensatz einen zugehörigen UNIX Timestamp.

              Mir ist keine Vorgehensweise bekannt, in der ich in einer Query die Anzahl der Datensätze, bezogen auf Monate oder Wochen, in die Ergebnissmenge einladen kann.

              Bin aber für Tips dankbar.

              VG, Rolf

              1. Hallo,

                Ich habe zu jedem Datensatz einen zugehörigen UNIX Timestamp.

                sowas halte ich persönlich für keine besonders gute Idee.

                Mir ist keine Vorgehensweise bekannt, in der ich in einer Query die Anzahl der Datensätze, bezogen auf Monate oder Wochen, in die Ergebnissmenge einladen kann.

                Das MySQL-Handbuch hat ein Kapitel Funktionen, es bietet sich an, im Abschnitt Date and Time Functions nachzusehen. Mit Strg+F nachschauen, ob es was zum Suchbegriff "UNIX" gibt.

                Ergebnis anwenden, dazu eins, zwei andere Datums- und Zeitfunktionen sowie zählen und gruppieren ...

                Freundliche Grüße

                Vinzenz

              2. Moin!

                Doch, hast du.

                Vielleicht noch mal etwas präziser.

                Ich habe zu jedem Datensatz einen zugehörigen UNIX Timestamp.

                Mir ist keine Vorgehensweise bekannt, in der ich in einer Query die Anzahl der Datensätze, bezogen auf Monate oder Wochen, in die Ergebnissmenge einladen kann.

                Deine Handbuchseite:
                http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

                Relevante Funktionen: FROM_UNIXTIME(), MONTH(), YEAR(), ggf. YEARWEEK(), DATEFORMAT().

                - Sven Rautenberg

                1. FROM_UNIXTIME(),

                  Hallo Sven,

                  wir sind zeitgleich fündig geworden. Ich habe ein Tut gefunden, in dem die Funktion von FROM_UNIXTIME()zum Einsatz kam.
                  Genau danach habe ich gesucht. Ich kannte sie nur vorher nicht.

                  Danke für Deine Hilfe. VG, Rolf

          2. Hi!

            Wenn du genau einen Monat abfragen willst, könntest du die Timestamps der Zeitpunkte "Monatsanfang" und "Monatsende" erzeugen und in den Query einbauen "WHERE timestamp BETWEEN $monatsanfang AND $monatsende".
            Also DAS wollte ich selbstredend nicht. Ich schrieb doch: "effektiv".

            Effektiv ist, wenn das DBMS in der indexierten Timestamp-Spalte schnell den Punkt findet, ab dem die Datensätze interessant sind und den ab dem sie es nicht mehr sind.

            Klar ist, dass es einfacher ginge, wenn ich die Date Time Funktion zur Verfügung hätte.

            Mit einer Funktion den Monat zu extrahieren, bedeutet, dass diese Funktion zunächst auf jeden Datensatz einzeln angewendet werden muss, um entscheiden zu können, ob er überhaupt verwendet werden soll oder nicht.

            Lo!

            1. yo,

              Mit einer Funktion den Monat zu extrahieren, bedeutet, dass diese Funktion zunächst auf jeden Datensatz einzeln angewendet werden muss, um entscheiden zu können, ob er überhaupt verwendet werden soll oder nicht.

              es sei den, man benutzt ein dbms (neuerdings aus dem gleichen hause), dass solche features wie "funktionsbasierter index" kennt.

              Ilja