Announcement

Collapse
No announcement yet.

View mit Ranking

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

  • View mit Ranking

    Hallo,

    ich muss im Rahmen einer Belegarbeit einen View erstellen der die 10 höchsten Monatsumsätze der jeweiligen Anbieter ausgibt.

    Ich habe es schon hinbekommen, das er alle Monatsumsätze ausgibt und diese mit einem Rang versieht. Aber das ist nicht das was am Ende rauskommen soll.
    Und leider bin ich auch im Internet nicht wirklich fündig geworden und irgendwie stehe ich grad vor einem großen schwarzen Loch in Sachen Ideen

    Vielleicht noch zur Erklärung...Ergebnis soll eine Liste mit Monat, Jahr, Anbieter und Umsatz. Insgesamt gibt es 3 verschiedene Anbieter und von jedem einzelnen Anbieter sollen die jeweilis 10 höchsten Monatsumsätze ausgegeben werden.

    Das habe ich bis jetzt (nicht wundern wegen den Spalten Namen, die müssen noch angepasst werden teilweise.)

    select d.d_monat, d.d_jahr, fb.anr_a_id, max(fb.fb_kosten), rank() over (order by max(fb.fb_kosten)) rang
    from datum d, fakten_beleg fb
    where
    d.d_datum = fb.fb_datum
    group by d.d_monat,d.d_jahr,fb.anr_a_id

    Danke Euch schonmal im voraus!!!

  • #2
    Wenn du Beispieldaten postest, dann schreib ich dir gerne ein Select-Statement!
    Wenn was schief gehen kann, dann geht es auch schief bzw. wenn man sich einen Fehler nicht erklären kann und dem nicht auf den Grund geht, hat das immer schlimme Folgen.

    Comment


    • #3
      ich hoffe folgenden angaben entsprechen dem was du brauchst um mir zu helfen.

      also...
      ergebnis soll aussehen

      Monat - Jahr - Anbieter - Umsatz - Rang
      1 - 2002 - 1 - 193,1578 - 1
      4 2005 - 1 - 190,35745 - 2
      ... (die 10 höchsten Monatsumsätze von anbieter 1)
      7 - 2003 - 2 - 202,1575 - 1
      1 - 2004 - 2 - 200,9654 - 2
      ...... (die 10 höchsten Monatsumsätze von anbieter 2)
      und das gleich dann nochmal für anbieter 3...

      als grundlage dient die dimensionstabelle datum, diese enhält jeden tag vom 01.01.2002 bis 31.12.2005 (sollten wir laut aufgabenstellung so machen) und die Faktentabelle Fakten_Beleg

      Aufbau Datum:
      d_datum d_tag d_monat d_jahr, d_kw, d_quartal, d_halbjahr
      01.01.2002 1 1 2002 ...

      Aufbau Fakten_Beleg:
      fb_id fb_plz fb_k_typ fb_tarifstufe fb_bereich fb_kosten fb_dauer anr_a_id
      123 0 P 3 N 157,056 258,45 2

      fb_datum
      01.01.2002
      Zuletzt editiert von Jesbo; 07.12.2007, 10:56.

      Comment


      • #4
        Originally posted by Jesbo View Post
        ich hoffe folgenden angaben entsprechen dem was du brauchst um mir zu helfen.

        also...
        ergebnis soll aussehen

        Monat - Jahr - Anbieter - Umsatz - Rang
        1 - 2002 - 1 - 193,1578 - 1
        4 2005 - 1 - 190,35745 - 2
        ... (die 10 höchsten Monatsumsätze von anbieter 1)
        7 - 2003 - 2 - 202,1575 - 1
        1 - 2004 - 2 - 200,9654 - 2
        ...... (die 10 höchsten Monatsumsätze von anbieter 2)
        und das gleich dann nochmal für anbieter 3...

        als grundlage dient die dimensionstabelle datum, diese enhält jeden tag vom 01.01.2002 bis 31.12.2005 (sollten wir laut aufgabenstellung so machen) und die Faktentabelle Fakten_Beleg

        Aufbau Datum:
        d_datum d_tag d_monat d_jahr, d_kw, d_quartal, d_halbjahr
        01.01.2002 1 1 2002 ...

        Aufbau Fakten_Beleg:
        fb_id fb_plz fb_k_typ fb_tarifstufe fb_bereich fb_kosten fb_dauer anr_a_id
        123 0 P 3 N 157,056 258,45 2

        fb_datum
        01.01.2002
        - Hmmm, könntest du nicht das ganze als komplettes, lauffähiges Beispiel posten, also die Create Scripte für die Tabellen und die Insert Scripte ? Nicht alle haben die Zeit und Lust, das ganze "händisch" nachzubauen, wenn du die Objekte ja eh schon hast :-)


        Gruss

        Comment


        • #5
          würde ich machen wenn es euch was bringen würde...das einzige was ich zur verfügung stellen könnte wäre das script für die datums tabelle.

          wie gesagt ist das alles für eine belegarbeit und die faktentabelle setzt sich aus anderen tabellen zusammen die auf einer oracle datenbank der uni liegen über die man von außen ohne passwort etc. nicht ran kommt. also selbst wenn ich das script zur befüllung der fakten tabelle posten würde, könnte niemand was damit anfangen.

          das erstellen der der tabellen wurde in der uni über den oracle designer gemacht...und die create etc. scripte liegen in der uni (wäre aber kein Problem da ran zu kommen)...könnte ich notfalls posten, aber nur das schema, bringt das was?

          gruß

          Comment


          • #6
            Ich hab das mit nem Beispiel von uns versucht mit deinen Feldern nachzubilden:

            SELECT d.d_monat
            , d.d_jahr
            , fb.anr_a_id
            , MAX(fb.fb_kosten)
            , rank() over (PARTITION BY d.d_monat,d.d_jahr ORDER BY d.d_monat,d.d_jahr,MAX(fb.fb_kosten) DESC ) rank
            FROM datum d, fakten_beleg fb
            WHERE d.d_datum = fb.fb_datum
            GROUP BY d.d_monat, d.d_jahr, fb.anr_a_id
            ORDER BY d.d_monat, d.d_jahr,4 DESC
            /

            Comment


            • #7
              danke dir...ist schon super, wie sage ich jetzt der ausgabe nur noch das es nur die 10 höchsten monatsumsätze von anbieter 1 und anbieter 2 und anbieter 3 (also insgesamt 30 datensätze)...momentan werden ja alle angezeigt. ich habe schon ein bissl versucht mit rownum zu spielen aber irgendwie stehe ich auf den schlauch.

              danke euch schonmal für alle ideen und umsetzungen!

              Comment

              Working...
              X