MySQL + Aggregatfunktionen + Timestamp Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL + Aggregatfunktionen + Timestamp Problem

    Hallo,

    aus einer Datenbanktabelle mit folgender Struktur:

    Tabellenstruktur:
    PHP-Code:
    Timestamp  I   Sp_1  I  Sp_2  I  Sp_3   I  Sp_4  
    ------------------------------------------------  
    1149962279 I   83,9  I  24,7  I   34,6  I  21,7  
    1149962278 I   12
    ,5  I  24,6  I   76,1  I  23,7  
    1149962277 I   23
    ,6  I  23,6  I   65,2  I  87
    sollen die Aggregatfunktionen
    - Durchschnitt,
    - Maximalwert und
    - Minimalwert
    für jede Spalte, für die letzten 2000 Datensätze
    ermittelt werden.

    Folgende Abfrage habe ich erstellt:
    PHP-Code:
    <?php
    $query  
    'SELECT    AVG(Sp_1), 
                         MAX(Sp_1), 
                         MIN(Sp_1),
                         AVG(Sp_2),
                         MAX(Sp_2),
                         MIN(Sp_2),
                         AVG(Sp_3),
                         MAX(Sp_3),
                         MAX(Sp_3),
                         MAX(Sp_4),
                         MAX(Sp_4),
                         MIN(Sp_4)                       
               FROM     `tabelle`
               ORDER BY `timestamp` DESC
               LIMIT 0, 2000 '
    ;
    ?>
    Wie kann ich jetzt noch zu den Angaben Maximalwert und Minimalwert noch den dazugehörigen Timestamp ermitteln?

    Mit freundlichen Grüßen

    php-linux-fan

  • #2
    PHP-Code:
    <?php
    $query  
    'SELECT    AVG(Sp_1), 
                         MAX(Sp_1), 
                         MIN(Sp_1),
                         AVG(Sp_2),
                         MAX(Sp_2),
                         MIN(Sp_2),
                         AVG(Sp_3),
                         MAX(Sp_3),
                         MAX(Sp_3),
                         MAX(Sp_4),
                         MAX(Sp_4),
                         MIN(Sp_4),
                         timestamp                 
               FROM     `tabelle`
               ORDER BY `timestamp` DESC
               LIMIT 0, 2000 '
    ;
    ?>
    so? Oder verstehe ich dich falsch?
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Hallo Benny-one,

      wenn ich deinen Vorschlag teste kommt folgende Fehlermeldung:

      PHP-Code:
      MySQL meldet:  
      #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause 
      MfG

      Kommentar


      • #4
        mach halt n GROUP BY timestamp rein - sofern das bei dir geht, ohne die Daten zu verfälschen.
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          So funktioniert es sowieso nicht ... das Limit bezieht sich immer auf das Gesamtergebnis.
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            Wie wäre es damit, den 2000. Datensatz zu bestimmen und dann die Durchschnittsquery zu machen?

            Select id from tabelle order timestamp desc limit 1999,1
            resultset =>id2000
            select sums where id>=id2000

            advanced mysql könnte eine subquery verwenden:

            select sums from (select * from tabelle order timestamp desc limit 2000)

            Beim ersten bin ich zuversichtlich dass es geht, das zweite wäre eine interessante Erfahrung *viel glück*

            EDIT:
            edit
            ach ja, und um heruaszufinden, welche Datensätze das min oder max oder avg annehmen (bzw diese zu selecten), hat es glaub-ich Beispiele im manual an mindestens 3 stellen *selberguck*
            Zuletzt geändert von mai; 12.06.2006, 19:35.

            Kommentar

            Lädt...
            X