Frank (no reg): SQL - Jede zwanzigste row auslesen?

Beitrag lesen

Hi

ich speichere Aktienkurse in einer Datenbank. Für jeden Tag und jede Aktie ein Wert. Nun will ich beispielsweise einen Chart über 10 Jahre zeichnen und dafür natürlich nicht jeden Tag sondern nur jeden Monat einzeichnen. Gibt des eine Möglichkeit per SQL nur jede zwanzigste Row auszulesen oder immer nur den ersten Tag eines Monats auszusen?

jeden 20. Datensatz zu lesen duerfte voraussetzen, dass du eine durchgehende Nummerierung hast. Einfacher duerfte es fuer dich sein, anhand des Datums zu gruppieren/selektieren

in Prosa: Selektiere jeden Datensatz fuer jede Aktie wo das Datum dem kleinsten oder groessten Datum des jeweiligen Monats der gleichen Aktie entspricht.

SELECT *
  FROM AktienPreise t
  WHERE t.Datum = (SELECT MIN(Datum)
                                 FROM AktienPreise t2
                                 WHERE t2.Aktienkennung = t1.Aktienkennung
                                 AND MONTH(t2.Datum) = MONTH(t.Datum)
                                 AND YEAR(t2.Datum) = YEAR(t.Datum))

... so ungefaehr (mit Absicht nicht die Loesung auf dem Silbertablett)

Oder müsste ich schon beim einlesen ein Feld erstellen und dort für die jeweilige row vermerken ob es sich um den ersten eines Monats handelt?

Nein, das ergibt sich automatisch aus dem Datum. 01.03.2012 wird immer der erste Tag des Monats Maerz sein. :-)    Fuer die Faelle, das der 1.3. ein Feiertag/Sonntag/Samstag ist, gibt es eben den Umweg mit der korrelierenden Unterabfrage)

Cheers, Frank