Vermeintliche die folgende Tabelle:MySQL: Auswählen von Zeilen nach Häufigkeit der Wert BESTELLT
People
---------------------------
id | First Name | Last Name
Wie kann ich die Zeilen SELECT ordered by häufigsten Vornamen?
Vermeintliche die folgende Tabelle:MySQL: Auswählen von Zeilen nach Häufigkeit der Wert BESTELLT
People
---------------------------
id | First Name | Last Name
Wie kann ich die Zeilen SELECT ordered by häufigsten Vornamen?
select
count(firstname) as countFn,
firstname
from people
group by firstname
order by countFn desc
bearbeiten: id und Nachname von ausgewählten
Dies funktioniert nicht, ID und Nachname können nicht in der SELECT-Klausel enthalten sein, da sie nicht Teil der GROUP BY-Klausel sind. –
@Martin: Dies ist MySQL, sie erlauben dieses Nicht-Standard-Verhalten. http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html –
@Peter Danke, wusste das nicht. Quote: "Der Server kann einen beliebigen Wert aus der Gruppe zurückgeben, daher sind die Ergebnisse unbestimmt, wenn nicht alle Werte gleich sind". In diesem Fall würde die Abfrage in dieser Antwort eine zufällige ID und einen Nachnamen für jeden firstName zurückgeben. Brrrrr, das ist gruselig. –
Im Falle entfernt man alle Namen durch die Anzahl der Vornamen sortiert sehen müssen in absteigender Reihenfolge, dann für Oracle dies funktionieren wird:
select n.firstname, n.lastname, g.count
from
people n, (select firstname, count(*) count from people group by firstname) g
where n.firstname=g.firstname
order by g.count desc
Nicht sicher, wie das mit zB funktioniert MySql.
select p.*, t.count
from people p
, (select FirstName, count(1) as count
from people
group by FirstName) t
where p.FirstName = t.FirstName
order by t.count desc;
Benötigen Sie nur die Vornamen, oder benötigen Sie alle Datensätze, wobei Datensätze mit den häufigsten Vornamen zuerst angezeigt werden? –