.Tom.: [PHP/MySQL] Anzahl der Werte größer als X

Huhu,

wie kann ich in einer MySQL-Datenbank die Anzahl der Werte ermitteln, die größer als X sind?

Ich habe eine Tabelle mit 3 Feldern (id, name, wert) und lese alle Namen aus, deren Wert größer als X ist. Jetzt möchste ich gerne wissen, wieviel Prozent aller ausgelesenen Werte jeder einzelne Wert entspricht. Dazu brauche ich die Summe der Werte sum(wert) as summe und eben die Anzahl der Werte die überhaupt ausgelesen wurden.

Wie kann ich das realisieren? So sieht der normale Abfrage aus:

$abfrage = "SELECT name, sum(wert) as summe, wert FROM auswertung WHERE wert > X GROUP BY name ORDER BY wert DESC";  

Zunächst dachte ich, dass count(name) as anzahl die richtige Anzahl liefert, da automatisch nur alle Namen gezählt werden, die größer X sind. Aber hier bekomme ich als Anzahl immer 1. Gibt es sowas wie count(wert > X) as anzahl?

danke schon mal :)

  1. Hi,

    Zunächst dachte ich, dass count(name) as anzahl die richtige Anzahl liefert, da automatisch nur alle Namen gezählt werden, die größer X sind. Aber hier bekomme ich als Anzahl immer 1.

    Natuerlich, weil du ja die Datensaetze nach name gruppierst.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Natuerlich, weil du ja die Datensaetze nach name gruppierst.

      Ich erhalte aber immer 1, egal ob ich nach id, name oder wert gruppiere :(

      1. Hi,

        Natuerlich, weil du ja die Datensaetze nach name gruppierst.

        Ich erhalte aber immer 1, egal ob ich nach id, name oder wert gruppiere :(

        Dann wird jede dieser Gruppierungen wohl nur genau einen Datensatz enthalten.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Dann wird jede dieser Gruppierungen wohl nur genau einen Datensatz enthalten.

          Die id ist fortlaufend (auto increment), aber auch die Namen sind einzigartig, als kann das eigentlich nicht sein.

          1. Hi,

            Dann wird jede dieser Gruppierungen wohl nur genau einen Datensatz enthalten.

            Die id ist fortlaufend (auto increment), aber auch die Namen sind einzigartig, als kann das eigentlich nicht sein.

            Doch, genau deshalb ist es das.

            GROUP BY spalte bedeutet, betrachte alle Datensaetze als eine Gruppe, in denen spalte den selben Inhalt hat.

            Wenn du also nach IDs oder einzigartigen Namen gruppierst, dann bildest du damit Gruppen, die jeweils nur einen Datensatz enthalten.
            Und diesen dann Zaehlen zu lassen, liefert - wenig ueberraschend - den Wert 1.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Okay, aber wie kann ich das Problem lösen?

              Ich muss GROUP BY machen, da sonst sum(wert) as summe nicht funktioniert.

  2. yo,

    das...

    wie kann ich in einer MySQL-Datenbank die Anzahl der Werte ermitteln, die größer als X sind?

    ist was anderes als das...

    Jetzt möchste ich gerne wissen, wieviel Prozent aller ausgelesenen Werte jeder einzelne Wert entspricht. Dazu brauche ich die Summe der Werte sum(wert) as summe und eben die Anzahl der Werte die überhaupt ausgelesen wurden.

    deine angabe, was genau du haben willst ist ein wenig schwammig. ich schlage vor, der erklärst das ganze noch mal in ruhe ganz ohne irgendwelchen sql code am besten mit beispielen. und ich vermute, du wirst weniger gruppierungen brauchen, sondern korrelierte unterabfragen. aber das läßt isch bei geigneten beispiel schnell klären.

    Ilja

  3. echo $begrüßung;

    wie kann ich in einer MySQL-Datenbank die Anzahl der Werte ermitteln, die größer als X sind?

    Gruppiere nach wert > X, dann bekommst du zwei Ergebniszeilen, eine mit allen Werten darüber und eine mit den kleineren oder gleichen.

    SELECT wert > X, COUNT(*) FROM table GROUP BY wert > X

    Ist es das, was du willst?

    echo "$verabschiedung $name";