Tiger: SQL Anfrage Problem

Hallo zusammen,
ich habe ein Problem mit einer SQL-Abfrage. Die Tabelle Stellplätze sieht folgendermaßen aus:

KNr | FNr | Anzahl

also enthält eine Kundennummer, eine Firmennummer und die Anzahl der Stellplätze die die Firma beim Kunden hat.
So, jetzt möchte ich eine Abfrage/Tabelle die mir die gesamte Anzahl an Stellplätzen liefert und den Marktanteil der Firma mit der Nr1.

meine Anfrage sieht so aus:

SELECT DISTINCTROW tbl_Stellplaetze.KNr, Sum(tbl_Stellplaetze.Anzahl) AS GesAnzahl,
Sum(tbl_Stellplaetze.Anzahl)/(SELECT tbl_Stellplaetze.Anzahl FROM tbl_Stellplaetze WHERE tbl_Stellplaetze.FNr=1) AS Marktanteil
FROM tbl_Stellplaetze
GROUP BY tbl_Stellplaetze.KNr;

Die Gesamtanzahl der Stellplätze klappt soweit auch, aber mit dem Marktanteil hab ich so meine Probleme..
Ich bekomme es nicht hin.. :-(

  1. yo,

    So, jetzt möchte ich eine Abfrage/Tabelle die mir die gesamte Anzahl an Stellplätzen liefert und den Marktanteil der Firma mit der Nr1.

    die gesamtanzahl der stellplätze kann mit deiner abfrage auch nicht stimmen oder aber ich habe den inhalt der abfrage falscg verstanden. wenn du gruppierst, dann beziehen sich alle aggregat-funktionen wie SUM nur auf die jeweilige gruppierung. sprich willst du die gesamtanzahl aller stellplätze und nicht nur einer bestimmten gruppierung, dann solltest du nicht gruppiere.

    SELECT SUM(t1.Anzahl)
    FROM tbl_Stellplaetze t1
    ;

    diese abfrage gibt die gesamtanzahl ALLER stellplätze. nun noch den marktanteil mit reinbringen. dazu ist aber sinnvoll zu wissen, welches dbms du benutzt und welche version.

    Gruß
    Ilja

    1. Hallo Ilja,

      nein da habe ich mich falsch ausgedrückt. Die Gesamtanzahl der Stellplätze möchte ich pro Kunde haben, deshalb die Gruppierung.

      Als DBMS habe ich Access2003..

      Irgendeinen Vorschlag für den Marktanteil (der Stellplätze von Firma1 pro Kunde) ?

      Gruß, Tiger

      1. yo,

        Als DBMS habe ich Access2003..

        Irgendeinen Vorschlag für den Marktanteil (der Stellplätze von Firma1 pro Kunde) ?

        jupp, man kann sich zunutze machen, dass aggregat-funktionen NULL werte nicht berücksichtigen. allerdings kenne ich die if/case Flussteuerung von access nicht 100% aus dem Kopf, da muss du noch mal in der online-hilfe nachschauen. denke mal es war IIF, aber eben nicht sicher...

        SELECT t1.KNr, SUM(t1.Anzahl) AS GesAnzahl,
        SUM(t1.Anzahl) / SUM(IIF(t1.FNr=1, t1.Anzahl, NULL))  AS Marktanteil
        FROM tbl_Stellplaetze t1
        GROUP BY t1.KNr
        ;

        Ilja

        1. uff da hört mein Wissen auf, die abfrage geht leider nicht bzw liefert falsche ergebnisse. könntest du mir das evtl ein wenig genauer erläutern? habe beim googeln nicht wirklich was gefunden was mich weitergebracht hätte...

          1. yo,

            uff da hört mein Wissen auf, die abfrage geht leider nicht bzw liefert falsche ergebnisse. könntest du mir das evtl ein wenig genauer erläutern?

            klar, wenn du mir sagen kannst, welches ergebnis den bei der abfrage raus kommt und was daran falsch sein soll, kann ich die abfrage noch mal durchgehen.

            Ilja