복붙노트

[SQL] 값 당 COUNT에 의해 주문

SQL

값 당 COUNT에 의해 주문

나는 ID를 저장하는 테이블과 상점이있는 도시가있다.

나는 대부분의 상점이있는 곳 도시에있는 가게로 시작하는 모든 상점을 나열합니다.

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

나는 뉴욕에있는 대부분의 상점이 있기 때문에 내가 원하는 출력 내가 모든 뉴욕의 위치를 ​​먼저 나열하려면, 다음과 같다.

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS

해결법

  1. ==============================

    1.

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

    또는

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

    아, 미안 해요, 난 당신의 질문을 잘못 해석했다. 나는 피터 랭 가문 대답은 올바른이었다 생각합니다.

  2. ==============================

    2.이 사람은 그 수 (SQL-바이올린)하여 및 주문을 결합, 별도의 쿼리의 수를 계산합니다 :

    이 사람은 그 수 (SQL-바이올린)하여 및 주문을 결합, 별도의 쿼리의 수를 계산합니다 :

    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;
    
  3. ==============================

    3.이 솔루션은 테이블이 매우 큰 경우는 실행 시간이 좀 걸릴 것입니다, 그래서 아주 최적 아니다 그러나 당신이 무엇을 요구한다.

    이 솔루션은 테이블이 매우 큰 경우는 실행 시간이 좀 걸릴 것입니다, 그래서 아주 최적 아니다 그러나 당신이 무엇을 요구한다.

     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
    

    그것은 당신이 당신이 그 도시가 데이터베이스에서 발생하는 횟수를 계산하는 건너하는 각 도시에 대한 것입니다.

    면책 조항 :이 당신을 위해 무엇을 요구 제공하지만 행의 수가 너무 커질 것입니다 생산 환경을 위해 추천하지 않을 것입니다.

  4. ==============================

    4.

    SELECT `FirstAddressLine4`, count(*) AS `Count` 
    FROM `leads` 
    WHERE `Status`='Yes'
    AND `broker_id`='0'
    GROUPBY `FirstAddressLine4` 
    ORDERBY `Count` DESC 
    LIMIT 0, 8
    
  5. from https://stackoverflow.com/questions/2283305/order-by-count-per-value by cc-by-sa and MIT license