• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 1. 서버에 연결 그리고 서버와 연결 끊기
    2. 쿼리 입력
    3. 데이터베이스 생성 및 사용
    1. 데이터베이스 생성 및 선택
    2. 테이블 만들기
    3. Loading Data into a Table
    4. 테이블에서 정보 검색
    1. 모든 데이터 선택
    2. 특정 행 선택
    3. 특정 컬럼의 선택
    4. 행 정렬
    5. 날짜 계산
    6. NULL 값 조작
    7. Pattern Matching
    8. Counting Rows
    9. 여러 테이블의 사용
    4. 데이터베이스 및 테이블 정보 가져 오기
    5. 배치 모드에서의 MySQL의 사용
    6. 일반적인 쿼리의 예제
    7. Apache와 MySQL 사용
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

3.3.4.8 행의 카운트

데이터베이스는 "테이블에서 특정 유형의 데이터가 얼마나 자주 나타나는가?"라는 질문에 대답하기 위해 사용되는 경우가 종종 있습니다. 예를 들어, 몇 마리 애완 동물을 기르고 있는지, 각각의 소유자가 몇 마리의 애완 동물을 소유하고 있는지를 조회하거나 동물에 다양한 개체수 조사를 실시 할 수있을 것입니다.

애완 동물의 수를 계산하는 것은 " pet 테이블에는 몇 줄 있느냐 '는 질문에 해당합니다. 이 테이블에는 애완 동물 당 하나의 레코드가 존재하기 때문입니다. COUNT(*) 행 수를 계산하기 위해 애완 동물의 수를 계산하는 쿼리는 다음과 같이됩니다.

mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+

전에 애완 동물 소유자의 이름을 취득했습니다. COUNT() 를 사용하여 각 소유자의 애완 동물의 수를 확인할 수 있습니다.

mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner  | COUNT(*) |
+--------+----------+
| Benny  |        2 |
| Diane  |        2 |
| Gwen   |        3 |
| Harold |        2 |
+--------+----------+

이 쿼리는 GROUP BY 를 사용하여 각 owner 의 모든 레코드를 그룹화하고 있습니다. COUNT() 를 GROUP BY 와 함께 사용하면 다양한 그룹화에서 데이터의 특징을 나타낼 수 있습니다. 다음 예제에서는 애완 동물의 개체수 조사를 실행하는 다양한 방법을 보여줍니다.

종마다의 애완 동물 수

mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird    |        2 |
| cat     |        2 |
| dog     |        3 |
| hamster |        1 |
| snake   |        1 |
+---------+----------+

성별마다의 애완 동물 수

mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex  | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+

(이 출력에서 NULL 은 성별 불명을 나타냅니다.)

종과 성별 조합 당 애완 동물 수

mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | NULL |        1 |
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

COUNT() 를 사용할 때 테이블 전체를 제거 할 필요는 없습니다. 예를 들어, 이전의 쿼리를 개와 고양이에 대해서만 실행하려면 다음과 같이합니다.

mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE species = 'dog' OR species = 'cat'
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
+---------+------+----------+

또는 성별 깨닫는 애완 동물에 대해서만 성별마다의 애완 동물 수를 확인하려면 :

mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE sex IS NOT NULL
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

COUNT() 값 외에도 선택하는 컬럼을 지정하는 경우, 그 컬럼을 GROUP BY 절에 지정해야합니다. 그렇지 않은 경우는 다음과 같습니다.

  • ONLY_FULL_GROUP_BY SQL 모드가 활성화되어 있으면 오류가 발생합니다.

     mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';
     Query OK, 0 rows affected (0.00 sec)
    
     mysql> SELECT owner, COUNT(*) FROM pet;
     ERROR 1140 (42000) : Mixing of GROUP columns (MIN (), MAX (), COUNT () ...)
     with no GROUP columns is illegal if there is no GROUP BY clause
    
  • ONLY_FULL_GROUP_BY 이 유효하지 않은 경우이 쿼리는 모든 행을 하나의 그룹으로 간주하여 처리되지만 지정된 각 컬럼에 선택되는 값은 불확정입니다. 서버에서 모든 행의 값이 자유롭게 선택됩니다.

    mysql> SET sql_mode = '';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT owner, COUNT(*) FROM pet;
    +--------+----------+
    | owner  | COUNT(*) |
    +--------+----------+
    | Harold |        8 | 
    +--------+----------+
    1 row in set (0.00 sec)
    

섹션 12.19.3 "MySQL의 GROUP BY 처리" 를 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved