SQL Abfrage - Häufigkeit ermitteln

Antworten
Nachricht
Autor
ElBlues
Beiträge: 127
Registriert: 25. Mär 2008 12:50
Kontaktdaten:

SQL Abfrage - Häufigkeit ermitteln

#1 Beitrag von ElBlues » 18. Apr 2008 11:03

Hi,

ich benötige mal ein paar Denkanstöße zu einer SQL-Abfrage. Ich habe eine Datenbank, in der kommen bestimmte Zahlenwerte mitunter mehrfach vor. Die Zahlenwerte selber sind nicht vorherzusagen und aus einem so großen Wertebereich, dass man nicht alle möglichen Werte durchprobieren muss.

Von den mehrfach vorkommenden Werten will ich jetzt wissen, welche 10 Werte am häufigsten vorkommen und wie häufig das jeweils der Fall ist.

Hat jemand einen Tipp wie sowas zu realisieren ist?
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 18. Apr 2008 12:27

Ausschließlich mit SQL geht das nicht.

Also erst per SQL sortieren, dann die Ausgabe in "uniq -c" reinstopfen, dann das Ergebnis mit "sort" sortieren.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ElBlues
Beiträge: 127
Registriert: 25. Mär 2008 12:50
Kontaktdaten:

#3 Beitrag von ElBlues » 18. Apr 2008 12:53

Hm, sowas wollte ich eigentlich vermeiden, da die Menge an Daten nicht eben klein ist. Und jedes mal einen kompletten Abzug der Tabelle zu ziehen (auch wenn es nur eine Spalte ist), ist leider doch etwas rechenintensiv...
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!

feldsee
Beiträge: 100
Registriert: 12. Feb 2001 15:50
Wohnort: Mainz
Kontaktdaten:

#4 Beitrag von feldsee » 28. Apr 2008 9:44

Code: Alles auswählen

SELECT Count(Dingsda.derBetreffendeZahlenwert) AS Anzahl, Dingsda.derBetreffendeZahlenwert FROM Dingsda
GROUP BY Dingsda.derBetreffendeZahlenwert
ORDER BY Count(Dingsda.derBetreffendeZahlenwert) DESCENDING
Wenn Dein SQL-Server jetzt noch ein

Code: Alles auswählen

SELECT TOP 10 
unterstützt, wird es perfekt ...
Du hast keine Chance, aber nutze sie!

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#5 Beitrag von Janka » 28. Apr 2008 11:58

Stimmt, man kann ja mit GROUP BY die Tabelle selektiv kippen. Danke Feldsee, wieder was gelernt.

SELECT TOP 10 kann man übrigens mit der "LIMIT"-Direktive erreichen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten