programing

고유 값 카운트

minecode 2023. 1. 14. 09:45
반응형

고유 값 카운트

예를 들어 애완동물이 몇 마리나 있는지 물어보는 데이터 세트를 가지고 있습니다.하나의 쿼리로 고유값(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);

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

좋아요, 전 이전 답변을 지웠어요 결국 윌랑포드가 찾던 답이 아니었으니까요 하지만 우리 모두가 그 질문을 오해하고 있는 건지도 모른다는 점을 분명히 했어요

저도 생각났어요.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
SELECT CUSTOMER, COUNT(*) as PETS 
FROM table_name 
GROUP BY CUSTOMER;

언급URL : https://stackoverflow.com/questions/4688814/count-distinct-values

반응형