Announcement

Collapse
No announcement yet.

Berechnung zwischen Zeilen in einer Spalte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Berechnung zwischen Zeilen in einer Spalte

    Hi zusammen,

    wie kann man eine simple Berechnung zwischen zwei aufeinanderfolgender Zeilen einer Spalte in MySQL durchführen? Hat sich schon jemand mit diesem Problem beschäftigt? Ich habe dazu leider noch nichts im Netz gefunden.

    Ein Bsp. zur Verdeutlichung:
    Umwandlung einer Preistabelle in eine Renditetabelle (d.h. Veränderung der Preise) z.B. durch Erstellung eines temporären Views.

    Struktur von Price Table:
    1. Column: NameID (Key)
    2. Column: DateID (Key)
    3. Column: Price

    Auszug aus Price Table:

    NameID DateID Price

    WQ 2010-01-01 10
    WQ 2010-01-02 12
    WQ 2010-01-03 6
    NF 2010-01-01 5
    NF 2010-01-02 10
    NF 2010-01-03 15

    Gewünschter View:

    NameID DateID Daily Return

    WQ 2010-01-02 +20%
    WQ 2010-01-03 -50%
    NF 2010-01-02 +100%
    NF 2010-01-03 +50%

    Ich würde mich sehr darüber freuen, wenn mir jemand etwas Input zur Lösung dieses Problems geben könnten.

  • #2
    Mal nur so als Anregung, gefällt mir mir selbst in einigen Punkten noch nicht so

    [highlight=sql]
    SELECT b.nameid bn, b.dateid bd
    , CONCAT(
    IF(a.price <= b.price, '+', ''),
    FLOOR((b.price - a.price) / a.price * 100),
    '%') diff
    FROM kprice a
    JOIN kprice b
    ON DATEDIFF(b.dateid, a.dateid) = 1
    AND a.nameid = b.nameid
    ORDER BY b.nameid DESC, b.dateid
    [/highlight]

    Datum muss immer exakt 1 Tag auseinander liegen
    + und % würde ich in die Ausgabelogik verfrachten

    Auch solltest du dir überlegen, ob nicht besser der vorhergehende Wert zusätzlich gespeichert wird, Trigger würde sich hier anbieten.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment

    Working...
    X