복붙노트

[SQL] 고유 값을 계산

SQL

고유 값을 계산

나는 그들이 예를 들어 얼마나 많은 애완 동물을 고객이 요구하는 데이터 세트가 있습니다. 나는 고유 한 값을 (1,2,3, 등) 믿을 수있는 하나 개의 쿼리있는 방법이 있나요? 감사!

+----------+------+
| Customer | Pets |
+----------+------+
|       20 |    2 |
|       21 |    3 |
|       22 |    3 |
|       23 |    2 |
|       24 |    4 |
+----------+------+

내가 원하는 말을 목록입니다 :

해결법

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

    1.다음과 같이 별개의 수를 할 수 있습니다 :

    다음과 같이 별개의 수를 할 수 있습니다 :

    SELECT COUNT(DISTINCT column_name) FROM table_name;
    

    편집하다:

    질문에 대한 귀하의 설명 및 업데이트에 따라, 나는 우리가 원래 생각했던 것보다 상당히 다른 문제가 있다고 지금 참조하십시오. "DISTINCT"SQL에서 특별한 의미가있다. 내가 제대로 이해한다면, 당신은 이런 식으로 뭔가를 원하는 :

    지금 당신은 아마 하위 쿼리를 사용하려는거야 :

    select COUNT(*) column_name FROM (SELECT DISTINCT column_name);
    

    이것이 당신이 찾고있는 매우 무엇을하지 않은 경우 알려줘.

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

    2.좋아, 마침내 willlangford 찾고 있었던되지 무엇 때문에 나는 내 이전 대답을 삭제,하지만 난 어쩌면 우리는 모든 질문을 오해했다 나의 강조했다.

    좋아, 마침내 willlangford 찾고 있었던되지 무엇 때문에 나는 내 이전 대답을 삭제,하지만 난 어쩌면 우리는 모든 질문을 오해했다 나의 강조했다.

    나는 또한 처음에는 SELECT DISTINCT ... 일이 생각하지만, 누군가 필요로 많은 사람들이 나머지 부분보다 애완 동물의 다른 수 있었다 방법을 알고 나에게 너무 이상한 듯 ... 그게 전부는 그게 아마 문제라고 생각하는 이유 충분히 명확하지.

    그래서, 진짜 문제의 의미를 명확히 지금이 자사 상당한 오버 헤드를 하위 쿼리를 만드는, 내가 바람직 GROUP BY 절을 사용합니다.

    이 같은 테이블 customer_pets이 상상 :

    +-----------------------+
    |  customer  |   pets   |
    +------------+----------+
    | customer1  |    2     |
    | customer2  |    3     |
    | customer3  |    2     |
    | customer4  |    2     |
    | customer5  |    3     |
    | customer6  |    4     |
    +------------+----------+
    

    그때

    SELECT count(customer) AS num_customers, pets FROM customer_pets GROUP BY pets
    

    반환 :

    +----------------------------+
    |  num_customers  |   pets   |
    +-----------------+----------+
    |        3        |    2     |
    |        2        |    3     |
    |        1        |    4     |
    +-----------------+----------+
    

    당신이 필요로하는.

  3. ==============================

    3.나는이 링크가 꽤 좋은 생각합니다.

    나는이 링크가 꽤 좋은 생각합니다.

    링크에서 샘플 출력 :

    mysql> SELECT cate_id,COUNT(DISTINCT(pub_lang)), ROUND(AVG(no_page),2)
        -> FROM book_mast
        -> GROUP BY cate_id;
    +---------+---------------------------+-----------------------+
    | cate_id | COUNT(DISTINCT(pub_lang)) | ROUND(AVG(no_page),2) |
    +---------+---------------------------+-----------------------+
    | CA001   |                         2 |                264.33 | 
    | CA002   |                         1 |                433.33 | 
    | CA003   |                         2 |                256.67 | 
    | CA004   |                         3 |                246.67 | 
    | CA005   |                         3 |                245.75 | 
    +---------+---------------------------+-----------------------+
    5 rows in set (0.00 sec)
    
  4. ==============================

    4.당신은이를 사용할 수 있습니다 :

    당신은이를 사용할 수 있습니다 :

    select count(customer) as count, pets
    from table
    group by pets
    
  5. ==============================

    5.

    SELECT CUSTOMER, COUNT(*) as PETS 
    FROM table_name 
    GROUP BY CUSTOMER;
    
  6. from https://stackoverflow.com/questions/4688814/count-distinct-values by cc-by-sa and MIT license