it-swarm.com.de

Bestellung nach COUNT pro Wert

Ich habe eine Tabelle, die IDs und die Stadt, in der sich der Laden befindet, speichert.

Ich möchte alle Geschäfte auflisten, die mit den Geschäften beginnen, die sich in der Stadt befinden, in der sich die meisten Geschäfte befinden.

TABELLE

ID CITY
1  NYC
2  BOS
3  BOS
4  NYC
5  NYC

Die Ausgabe, die ich möchte, ist die folgende, da ich die meisten Geschäfte in NYC habe. Ich möchte, dass alle Standorte in NYC zuerst aufgeführt werden.

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS
44
Enkay
SELECT count(City), City
FROM table
GROUP BY City
ORDER BY count(City);

OR

SELECT count(City) as count, City
FROM table
GROUP BY City
ORDER BY count;

Ah, Entschuldigung, ich habe Ihre Frage falsch interpretiert. Ich glaube, Peter Langs Antwort war die richtige.

56
MindStalker

Dieser berechnet die Anzahl in einer separaten Abfrage, fügt sie zusammen und ordnet nach dieser Anzahl ( SQL-Fiddle ):

SELECT c.id, c.city
FROM cities c
JOIN ( SELECT city, COUNT(*) AS cnt
       FROM cities
       GROUP BY city
     ) c2 ON ( c2.city = c.city )
ORDER BY c2.cnt DESC;
28
Peter Lang

Diese Lösung ist nicht sehr optimal. Wenn Ihre Tabelle sehr groß ist, kann dies jedoch einige Zeit in Anspruch nehmen.

 select c.city, c.id, 
      (select count(*) as cnt from city c2 
       where c2.city = c.city) as order_col
 from city c
 order by order_col desc

Das heißt, für jede Stadt, der Sie begegnen, zählen Sie, wie oft diese Stadt in der Datenbank vorkommt.

Haftungsausschluss: Dies gibt das, wonach Sie fragen, aber ich würde es nicht für Produktionsumgebungen empfehlen, in denen die Anzahl der Zeilen zu groß wird.

6
SELECT `FirstAddressLine4`, count(*) AS `Count` 
FROM `leads` 
WHERE `Status`='Yes'
AND `broker_id`='0'
GROUPBY `FirstAddressLine4` 
ORDERBY `Count` DESC 
LIMIT 0, 8
0
Corrie