VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
COUNT(*)는 행이 몇 개인지 답합니다. COUNT(DISTINCT column)은 서로 다른 값이 몇 개인지 답하는데, 처음 만나는 열에 대해서는 보통 이쪽이 더 흥미로운 질문입니다.
시작하기 전에 mysql -u root -p sakila로 클라이언트를 여세요.
COUNT DISTINCT의 동작 방식
COLUMN_NAME을 서로 다른 값을 세고 싶은 열로, TABLE_NAME을 테이블로 바꾸세요. 서버는 모든 행을 읽고, 반복되는 것을 버리고, 남은 것을 셉니다.
이것은 SELECT DISTINCT가 반환할 것의 개수이며, 그것을 반환하지는 않습니다.
예제
- 서로 다른 값이 몇 개인가
- 서로 다른 조합
여러 열을 지정하면 조합 하나가 한 번 세어지며, GROUP BY가 그것들을 다루는 방식과 같습니다.
NULL을 건너뛰므로, 답이 잘못된 것처럼 보일 수 있습니다
address2는 4개 행에서 NULL이고 나머지 599개 행에서 빈 문자열입니다.
SELECT COUNT(*) FROM address WHERE address2 IS NULL.
요약
- 행이 아니라 서로 다른 값을 세려면
COUNT(DISTINCT column)을 사용하세요. - 서로 다른 조합을 세려면 여러 열을 지정하세요.
- NULL은 값으로 세어지지 않고 건너뛰어진다고 예상하세요.
- 두 숫자가 모두 필요하면 빠진 행을 따로 세세요.
함께 보기
- 집계 함수 — 나머지 집계 함수들
- SELECT DISTINCT — 그 값들을 세는 대신 반환하기
- GROUP BY — 범주별로 세기
- MySQL GROUP BY 성능 — 대규모에서 중복 제거에 드는 비용