Announcement

Collapse
No announcement yet.

Komplexe SQL Abfrage

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

  • Komplexe SQL Abfrage

    Hallo zusammen,
    ich versuche eine komplexe SQL Abfrage durchzuführen, bei der ich nicht weiterkomme. Für eure Hilfe wäre ich euch daher sehr dankbar.
    Ich würde gerne aus folgenden drei Tabllen eine kombinierte Abfrage durchführen:

    Tabelle 1 beinhaltet die Eigenschaften von verschiedenen Finanzinstrumenten (Aktien und ETFs)

    Tabelle 2 beinhaltet die Zusammensetzung eines Portfolios aus Finanzinstrumenten, die in Tabelle 1 gelistet sind. Dabei sind sowohl Einzeltitel im Portfolio (Aktien), als auch ETFs, welche wiederum eine Zusammensetzung aus Einzelaktien darstellen. Es ist möglich, dass eine Aktie sowohl direkt im Portfolio eingebucht ist, als auch zusätzlich indirekt über einen ETF (im angehängten Beispiel die Netflix Aktie)

    Tabelle 3 beinhaltet die gewichtete Zusammensetzung eines ETFs aus den einzelnen Aktien

    Die Abfrage soll das Protfolio so anzeigen, dass alle ETFs durch ihre entsprechenden Einzeltitel mit der richtigen Gewichtung ersetzt werden.
    (siehe dazu das angehängte Bild als Beispiel).
    Könnte jemand für mich eine solche Abfrage schreiben? Ich verwende SQLite.
    Viele Grüsse,
    Patrick


    Attached Files

  • #2
    Den Tabellen fehlt jeweils eine ID für den Datensatz und eine FK-Beziehung.Und warum das nun in verschiedenen Tabellen steht erschließt sich auch nicht. Hast du zu einer Aktie verschiedene Stückzahlen und woran würdest du die Datensätze mit den Stückzahlen unterscheiden?
    Somit
    Tabellen über den Namen zusammen joinen
    die Spalte Stückzahl wird mit einer when-Bedingung erstellt (when gewichtung is null dann Wert aus Stückzahl, sonst Berechung mit Wert aus Gewichtung und Stückzahl). Den Unterschied in der Berechnung von Netflix und den anderen Aktien musst du dann noch irgendwie kenntlich machen. Das an dem Namen aufzuhängen halte ich für nicht zielführend
    Das gleiche gilt für die Spalte Gesamtwert
    Zuletzt editiert von Christian Marquardt; 13.01.2019, 16:19.
    Christian

    Comment


    • patrick123
      patrick123 commented
      Editing a comment
      Hallo Christian,
      erst mal vielen Dank für deine Antwort. Ich habe das Beispiel zu Illustrationszwecken stark vereinfacht. Funktioniert in diesem Beispiel der Name als Primär- und Fremdschlüssel nicht?
      Nein - jede Aktie hat eine Stückzahl. Aber sie kann eben sowohl direkt gekauft werden (mit einer konkreten Stückzahl), als auch indirekt über einen ETF. Der Gesamtbestand im Depot ergibt sich dann als Summe des "direkten Bestandes" und des "indirekten Bestandes".
      Verschiedene Tabellen sind es deswegen, weil es von der Logik so zusammenghört:
      die ETF Tabelle sind Eigenschaften des ETFs (seine Zusammensetzung), die Instrumenttabelle sind Eigenschaft der einzelnen Aktien und die Portfoliotabelle sind Eigenschaften des Portfolios. Wenn die Datenlage komplexer wird ist das klarer.
      Wie wirst du in deiner Beschreibung den ETF selber im Resultat los? Dieser soll ja durch seine Bestandteile ersetzt werden

  • #3
    Man nimmt keine Geschäftsdaten als technische Schlüssel

    Das habe ich versucht zu beschreiben:
    Die Spalte wird aus mehreren Spalten berechnet, je nachdem, ob etwas in der Gewichtung drin steht
    Es fehlt allerdings ein Merkmal was für eine Berechnung durchgeführt werden soll. Im Falle von Nerflix ist es eine andere als in den anderen Fällen. Die Art der berechnung muss irgendwie erkannt werden. Das am Namen festzustellen ist nicht sinnvoll

    select titel,
    wenn gewichtung is null
    Stückanzahl
    sonst
    7*400*Gewichtung/Preis
    as Effekt. Stückzahl,
    preis,
    wenn gewichtung is null
    Preis*Stückzahl
    sonst
    Preis*Stückzahl*Gewichtung
    as Gesamtwert,
    land
    from Tab1
    left join tab2 on tab1.Name=tab2.Name,
    left join tab3 on tab1.Name=tab3.Name
    Zuletzt editiert von Christian Marquardt; 13.01.2019, 18:54.
    Christian

    Comment


    • #4
      Bildschirm Fotos sind vielleicht hübsch als Addon, aber Text mit Tabellenaufbau und Daten sind wirklich hilfreich.
      Im Übrigen sieht es so aus, als sei Deine "Vereinfachung" eher eine Idee oder einfach eine Ergebnisdarstellung oder Wunschvorstellung von irgendwo, die nicht aus einem realen, meinetwegen komplexen Datenmodell stammt. Falls es tatsächlich vereinfacht wurde, warum dann noch mit Land, hätte in einer Vereinfachung rausfallen können.
      Die ETF Geschichte ist letztlich in der Darstellung jenseits von SQL würde ich sagen.

      Vielleicht kannst Du Deine Vereinfachung nochmal prüfen und DDL sowie DML zur Verfügung stellen. (Das mit den fehlenden ID wurde ja schon von Christian angemerkt)

      Comment

      Working...
      X