고유 값 카운트
예를 들어 애완동물이 몇 마리나 있는지 물어보는 데이터 세트를 가지고 있습니다.하나의 쿼리로 고유값(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
'programing' 카테고리의 다른 글
JavaScript에서 null 값을 확인하려면 어떻게 해야 합니까? (0) | 2023.01.14 |
---|---|
mariadb에서 -> 연산자를 사용하여 JSON 열을 조회하는 방법 (0) | 2023.01.14 |
상위 구성 요소에서 하위 구성 요소로의 이벤트 (0) | 2023.01.14 |
Java 날짜 컷오프 시간 정보 (0) | 2023.01.14 |
1바이트에 몇 글자를 저장할 수 있습니까? (0) | 2023.01.14 |