48 votes

Ordre par COUNT par valeur

J'ai une table qui stocke les ID et la ville où se trouve le magasin.

Je veux répertorier tous les magasins en commençant par ceux qui se trouvent dans la ville où il y a le plus de magasins.

TABLEAU

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

Le résultat que je veux obtenir est le suivant : comme j'ai le plus grand nombre de magasins à New York, je veux que tous les magasins de cette ville soient listés en premier.

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS

62voto

MindStalker Points 7476
SELECT count(City), City
FROM table
GROUP BY City
ORDER BY count(City);

OU

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

Ahh, désolé, j'ai mal interprété votre question. Je crois que la réponse de Peter Langs était la bonne.

29voto

Peter Lang Points 25877

Celle-ci calcule le nombre dans une requête séparée, la joint et ordonne par ce nombre ( 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;

6voto

Vincent Ramdhanie Points 46265

Cette solution n'est pas très optimale et si votre tableau est très grand, elle prendra un certain temps à s'exécuter, mais elle fait ce que vous demandez.

 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

Autrement dit, pour chaque ville que vous rencontrez, vous comptez le nombre de fois où cette ville apparaît dans la base de données.

Avis de non-responsabilité : Cette méthode permet d'obtenir ce que vous demandez, mais je ne la recommande pas pour les environnements de production où le nombre de lignes est trop important.

0voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X