Nice programing

고유 값 계산

nicepro 2020. 10. 23. 18:54
반응형

고유 값 계산


예를 들어 고객에게 애완 동물의 수를 묻는 데이터 세트가 있습니다. 하나의 쿼리로 고유 값 (1,2,3 등)을 계산할 수있는 방법이 있습니까? 감사!

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

내가 원하는 것은 다음과 같은 목록입니다.

  • 2 마리 2 마리
  • 2 마리 3 마리
  • 1 마리 애완 동물 4 마리

다음과 같이 고유 한 카운트를 수행 할 수 있습니다.

SELECT COUNT(DISTINCT column_name) FROM table_name;

편집하다:

귀하의 설명과 질문에 대한 업데이트에 따라 이제 우리가 원래 생각했던 것과는 완전히 다른 질문이라는 것을 알게되었습니다. "DISTINCT"는 SQL에서 특별한 의미를 갖습니다. 내가 올바르게 이해하면 다음과 같은 것을 원합니다.

  • 2 명의 고객에게 1 마리의 애완 동물이있었습니다.
  • 3 명의 고객에게 2 마리의 애완 동물이있었습니다.
  • 1 명의 고객에게 3 마리의 애완 동물이있었습니다.

이제 하위 쿼리를 사용하고 싶을 것입니다.

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

이것이 당신이 찾고있는 것이 아니라면 알려주세요.


좋아, 마침내 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     |
+-----------------+----------+

당신이 필요로.


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

해당 링크의 샘플 출력 :

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)

이것을 사용할 수 있습니다 :

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

참고URL : https://stackoverflow.com/questions/4688814/count-distinct-values

반응형