Einzelnen Beitrag anzeigen

tgvoelker

Registriert seit: 9. Sep 2002
Ort: Oelsnitz, Vogtland
39 Beiträge
 
Delphi 2009 Professional
 
#18

AW: HAVING mit MAX (alias)

  Alt 8. Jul 2012, 11:58
Code:
SELECT id, count(wert) as anz
GROUP BY id
HAVING (anz = MAX(anz))
Das kann nicht funktionieren, weil Du ein einfaches Aggregat eines Wertes mit einem mehrfachen Aggregat desselben vergleichen willst - was innerhalb einer SQL-Ebene (deren Aggregationsregeln Du mit GROUP BY definierst) unzulässig ist. Du erkennst das daran, daß MAX(ANZ) gruppenübergreifend ermittelt werden soll.

Where schränkt übrigens die ursprünglichen Datenmengen ein, d.h. wirkt vor der Gruppierung, kann deshalb die Aggregate nicht kennen.

Die folgende Syntax funktioniert (auf mySQL 5.1 getestet)

Code:
select
FileExt
,count(FileId) as Anz
from
filetable
group by FileExt
having
Anz=(select max(subanz) from (select count(FileId) as subanz from filetable group by FileExt)as subtab)
"FileExt" wäre Dein "ID", "FileId" entspräche Deinem "wert".
Thomas Völker
  Mit Zitat antworten Zitat