Schrittweise zählen

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

  • Schrittweise zählen

    Moin !!

    Folgendes Problem:
    Ich habe eine Datenbank mit 10000 Datensätzen. Für diese Daten werden onthefly Balkendiagramme erstellt. Wenn man einfach nur den einen Wert gegen den anderen stellt ist das alles auch recht einfach und funktioniert auch. Nun bin ich aber an einem Problem dran:
    Es gibt die Möglichkeit Schrittweise ein Diagramm zu erstellen. Soll heissen: User XY möchte gerne aus dem Jahr 1950 bis 2010 alle Daten mit einer Schrittweite von 2 Jahren pro Barchart haben. (hab jetzt hier das Beispiel mit den Jahren genommen, da es das einfachste für Aussenstehende ist)

    Hier habe ich 2 (bzw. 3) Möglichkeiten gefunden das zu regeln:

    1. 60 einzelne SQL-Abfragen in einer Schleife

    2. Gefakte UNION-Abfrage (Nicht mit Jahren, aber von der Art das gleiche):
    Code:
    SELECT sum( units ) AS units, (
    capacity / units
    BETWEEN 0 AND 9
    ) AS '0-9', (
    capacity / units
    BETWEEN 10 AND 19
    ) AS '10-19', (
    capacity / units
    BETWEEN 20 AND 29
    ) AS '20-29', (
    capacity / units
    BETWEEN 30 AND 39
    ) AS '30-39', (
    capacity / units
    BETWEEN 40 AND 49
    ) AS '40-49', (
    capacity / units
    BETWEEN 50 AND 59
    ) AS '50-59', (
    capacity / units
    BETWEEN 60 AND 69
    ) AS '60-69', (
    capacity / units
    BETWEEN 70 AND 79
    ) AS '70-79', (
    capacity / units
    BETWEEN 80 AND 89
    ) AS '80-89', (
    capacity / units
    BETWEEN 90 AND 99
    ) AS '90-99', (
    capacity / units
    BETWEEN 100 AND 109
    ) AS '100-109'
    FROM d_plants
    WHERE capacity / units
    BETWEEN 0 AND 109
    GROUP BY 2, 3, 4, 5, 6, 7, 8,9,10,11,12
    ORDER BY 12,11,10,9,8,7,6,5,4,3,2
    3. eine "echte" Union-Abfrage ...fällt aber leider weg, da halt nochnicht überall verfügbar ist.

    So Problem ist: Version 1 und 2 laufen bei einer Schrittanzahl von 50-100 noch recht schnell. Beide Versionen nehmen sich nicht viel in Sachen geschwindigkeit. Aber es gibt auchnoch andere Sachen zum Abfragen (nicht nur Jahreszahlen), bei denen man theoretisch über 1000 Schritte kommen kann. Ich habe es bisher auf 500 Schritte geblockt, damit es noch einigermassen "fix" geht.

    Tja... das wars eigentlich schon. Hat irgendwer dazu eine andere/bessere Lösung?

    Danke und schönen Gruss
    Jan
    www.traum-projekt.com

  • #2
    Also ich würde mal sowas in der Art probieren:

    Code:
    SELECT FLOOR(YEAR(datum)/2)*2 datumselement, SUM(werte)
      FROM tabelle
     GROUP BY datumselement
    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


    • #3
      eehhh... ich fasse es nicht... Warum ist das so einfach?!
      Ich brech mir einen ab und dabei ists auch nur eine Zeile?! ...

      Aber ok... jetzt muss ich sie nurnoch richtig verstehen

      Auf alle Fälle ein dickes DANKESCHÖN!

      Gruss
      Jan

      PS: ein AS hast vergessen
      www.traum-projekt.com

      Kommentar

      Lädt...
      X