sql mixing of group columns



  • hallo
    ich habe folgendes problem ich hoffe jemand kann mir weiter helfen
    SELECT COUNT(*) AS anzahl
    FROM kunde
    WHERE plz LIKE "4%";

    antwort: sql mixing of group columns (min(),max() usw
    ich dachte bei einem einzeiler macht nix aus muss man denn unbedingt gruppenieren bei jeder aggregationfkt
    im vorraus danke



  • Na wenn Dein RDBMS erfordert dann wirst Du es machen müssen.
    Wenn man sich an SQL-Standard hält dann musst Du Gruppieren denn mein Verständnis ist: Wie soll das RDBMS wissen was Du möchtest. Es liefert Dir eine Tabelle mit LIKE '4%' aus PLZ und dann möchtest DU auf einmal einen Count().
    Der liegt aber nicht vor denn RDBMS geht i.R. von hinten nach vorne.
    Dies alles vermutlich aus Tempogründen.
    Es muss eben nur gezählt werden und nicht eine Liste erstellt werden.



  • also normalerweise müsste das gehen. bei mir (sql server 2005) klappt das auch.
    gruppieren musst du meines wissens nur, wenn du
    a) eine aggregatsfunktion nutzt(wie count, min oder avg)
    b) gleichzeitig im select noch mindestens ein weites feld selektierst

    das ist dann nötig, damit er weiss, wie er die anderen felder, die er ausgeben zusammenfassen soll. du gibst aber nur das ergebniss von count aus, nichts weiter.

    du sagst ihm:
    1. hole alle datensätze raus, auf die like 'blabla' passen
    2. zähle die anzahl der datensätze, die du in punkt 1 bekommen hast

    was für ein db-system nutzt du denn?


Anmelden zum Antworten