Order by COUNT per value

前端 未结 4 2065
时光说笑
时光说笑 2020-11-27 05:12

I have a table which stores IDs and the city where the store is located.

I want to list all the stores starting with the stores that are in the city where there are

相关标签:
4条回答
  • 2020-11-27 05:23
    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;
    

    Ahh, sorry, I was misinterpreting your question. I believe Peter Langs answer was the correct one.

    0 讨论(0)
  • 2020-11-27 05:30

    This one calculates the count in a separate query, joins it and orders by that count (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;
    
    0 讨论(0)
  • 2020-11-27 05:30
    SELECT `FirstAddressLine4`, count(*) AS `Count` 
    FROM `leads` 
    WHERE `Status`='Yes'
    AND `broker_id`='0'
    GROUPBY `FirstAddressLine4` 
    ORDERBY `Count` DESC 
    LIMIT 0, 8
    
    0 讨论(0)
  • 2020-11-27 05:31

    This solution is not a very optimal one so if your table is very large it will take some time to execute but it does what you are asking.

     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
    

    That is, for each city that you come across you are counting the number of times that that city occurs in the database.

    Disclaimer: This gives what you are asking for but I would not recommend it for production environments where the number of rows will grow too large.

    0 讨论(0)
提交回复
热议问题