Hans: MySQL abfrage

Beitrag lesen

Hallo,

ich hab ein kleines DB Problem.

ich hab eine DB die ca so aufgabaut ist:

xyz | 0 | xyz | xyz
xyz | 0 | xyz | xyz
xyz | 2 | xyz | xyz
xyz | 2 | xyz | xyz
xyz | 2 | xyz | xyz
xyz | 0 | xyz | xyz
xyz | 8 | xyz | xyz
xyz | 0 | xyz | xyz
...

Ich hab also eine Spalte, in der verschiedenen Zahlen (nur Ganzzahlen) stehen. Nun will ich wissen, welche dieser Zahlen in dieser Spalte am häufigsten (und wie häufig) vorkommt! Also in diesem Fall die 0 ganze 4 Mal!

Ich hab nur keinen Plan wie ich diese spezielle Abfrage realisieren kann... Jemand eine schöne Idee??

Thx

  • Simon

Hallo Simon,

select Zahl, count(Zahl)
from Tabelle
group by Zahl
having count(Zahl)=
   (select max(anzahl)
   from
      (select Zahl, count(Chip) as anzahl
      from Tabelle
      group by Zahl)
   )
;

So, die innerste Abfrage holt die mal die Zahlen und wie oft sie vorkommen. Die darueber liegende Abfrage benutzt diese Ergebnismenge der inneren Abfrage als Tabelle und sucht die Maimalzahl. Bei mehreren gleich großen Zahlen wird nur eine dieser Zahlen zurueckgeliefert. Und das ist wichtig, weil die aeusserste Abfrage eine "=" und keine "in"-Beziehung ist. Die aeusserste Abfrage sucht also alle Zahlen, zaehlt wie oft sie vorkommt (group by) und fuer diese Ergebnismenge muss der count gleich dem Ergebnis der inneren Abfrage sein. Dadurch erhaelst Du die Zahl, die am Haeufigsten vorkommt und gleichzeitig, wie oft.

Gruß

Hans