• 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
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 1. 함수와 연산자 참조
    2. 식 평가 형식 변환
    3. 연산자
    4. 제어 흐름 함수
    5. 문자열 함수
    6. 수치 함수와 연산자
    7. 날짜 및 시간 함수
    8. MySQL에서 사용되는 달력
    9. Full-Text 검색 기능
    10. 캐스트 함수와 연산자
    11. XML 함수
    12. 비트 함수
    13. 암호화 함수와 압축 함수
    14. 정보 함수
    15. 공간 분석 함수
    16. 글로벌 트랜잭션 ID와 함께 사용되는 함수
    17. MySQL Enterprise Encryption 기능
    18. 기타 함수
    19. GROUP BY 절에서 사용되는 함수와 수식
    1. GROUP BY (통합) 함수
    2. GROUP BY 수식
    3. MySQL의 GROUP BY 처리
    20. 정밀 계산
  • 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 새로운 기능

12.19.1 GROUP BY (통합) 함수

표 12.24 집계 ( GROUP BY ) 함수

이름 설명
AVG () 인수의 평균을 반환합니다
BIT_AND () 비트 단위 And을 반환합니다
BIT_OR () 비트 단위 OR를 반환합니다
BIT_XOR () 비트 XOR을 반환합니다
COUNT (DISTINCT) 다른 값의 개수를 반환합니다
COUNT () 반환 된 행의 수를 반환합니다
GROUP_CONCAT () 연결된 문자열을 반환합니다
MAX () 최대 값을 반환합니다
MIN () 최소값을 반환합니다
STD () 모집단 표준 편차를 반환합니다
STDDEV_POP () 모집단 표준 편차를 반환합니다
STDDEV_SAMP () 표본 표준 편차를 반환합니다
STDDEV () 모집단 표준 편차를 반환합니다
SUM () 집계를 반환합니다
VAR_POP () 어머니 표준 분산을 반환합니다
VAR_SAMP () 표본 분산을 반환합니다
VARIANCE () 어머니 표준 분산을 반환합니다

이 섹션에서는 값 세트에서 동작하는 그룹 (집합) 함수에 대해 설명합니다. 특히 지정되어 있지 않으면, 그룹 함수는 NULL 값이 무시됩니다.

GROUP BY 절을 포함하지 않는 문에서 그룹 함수를 사용하려면 모든 행을 그룹화하는 것과됩니다. 자세한 내용은 섹션 12.19.3 "MySQL의 GROUP BY 처리" 를 참조하십시오.

숫자 인수의 경우, 분산 및 표준 편차 함수가 DOUBLE 값을 반환합니다. SUM() 및 AVG() 함수는 정확한 값 인수 (정수 또는 DECIMAL )의 경우는 DECIMAL 값을 반환 근사치 인수 ( FLOAT 또는 DOUBLE )의 경우는 DOUBLE 값을 반환합니다.

SUM() 및 AVG() 집계 함수는 시간 값을 취급하지 않습니다. (이러한 값을 숫자로 변환하기 때문에 첫 번째 숫자가 아닌 문자 뒤의 모든 정보가 손실됩니다.)이 문제를 해결하려면 숫자 단위로 변환하여 집계 작업을 수행하고 시간 값으로 되돌립니다. 예 :

 SELECT SEC_TO_TIME (SUM (TIME_TO_SEC ( time_col ))) FROM tbl_name ;
 SELECT FROM_DAYS (SUM (TO_DAYS ( date_col ))) FROM tbl_name ;

수치 인수를 SUM() 과 AVG() 등의 함수는 필요에 따라 인수를 숫자로 변환합니다. SET 및 ENUM 값의 경우 캐스트 연산에 기반이되는 수치가 사용됩니다.

  • AVG ([DISTINCT] expr )

    expr 의 평균 값을 반환합니다. DISTINCT 옵션을 사용하면 개별 expr 값의 평균을 반환 할 수 있습니다.

    일치하는 행이없는 경우, AVG() 는 NULL 을 반환합니다.

     mysql> SELECT student_name, AVG(test_score)
         -> FROM student
         -> GROUP BY student_name;
    
  • BIT_AND ( expr )

    expr 의 모든 비트의 비트 단위 AND 를 반환합니다. 계산은 64 비트 ( BIGINT )의 정밀도로 실행됩니다.

    일치하는 행이없는 경우,이 함수는 18446744073709551615 을 돌려줍니다. (이것은 모든 비트가 1로 설정된 부호가없는 BIGINT 값의 값입니다.)

  • BIT_OR ( expr )

    expr 의 모든 비트의 비트 단위 OR 를 반환합니다. 계산은 64 비트 ( BIGINT )의 정밀도로 실행됩니다.

    일치하는 행이없는 경우,이 함수는 0 을 반환합니다.

  • BIT_XOR ( expr )

    expr 의 모든 비트의 비트 단위 XOR 을 반환합니다. 계산은 64 비트 ( BIGINT )의 정밀도로 실행됩니다.

    일치하는 행이없는 경우,이 함수는 0 을 반환합니다.

  • COUNT ( expr )

    SELECT 문에서 검색된 행에 포함 된 expr 의 비 NULL 값의 수를 돌려줍니다. 결과는 BIGINT 값입니다.

    일치하는 행이없는 경우, COUNT() 는 0 을 반환합니다.

     mysql> SELECT student.student_name,COUNT(*)
         -> FROM student,course
         -> WHERE student.student_id=course.student_id
         -> GROUP BY student_name;
    

    COUNT(*) 는 NULL 값이 포함되는지 여부에 관계없이 취득 된 행의 수를 반환한다는 점에서 약간 다릅니다.

    COUNT(*) 는 SELECT 가 하나의 테이블에서 가져오고, 다른 컬럼은 검색되지 않고 WHERE 절이없는 경우에 매우 신속하게 반환하도록 최적화되어 있습니다. 예 :

     mysql> SELECT COUNT(*) FROM student;
    

    이 최적화는 MyISAM 테이블에만 적용됩니다. 그 이유는 정확한 행이 스토리지 엔진에 포함되는 것으로, 매우 빠르게 액세스 할 수 있습니다. InnoDB 등의 트랜잭션 스토리지 엔진에서 정확한 행을 저장하면 여러 트랜잭션이 각각 숫자에 영향을 미칠 수 있기 때문에 문제가 발생할 가능성이 높아집니다.

  • COUNT (DISTINCT expr [ expr ...])

    다양한 비 NULL expr 값을 갖는 행의 수를 돌려줍니다.

    일치하는 행이없는 경우, COUNT(DISTINCT) 는 0 을 반환합니다.

     mysql> SELECT COUNT(DISTINCT results) FROM student;
    

    MySQL에서는,식이 목록을 지정하여 NULL 이 포함되지 않는 개별 식의 조합 수를 얻을 수 있습니다. 표준 SQL에서는 COUNT(DISTINCT ...) 내부에서 모든 수식을 연결해야합니다.

  • GROUP_CONCAT ( expr )

    이 함수는 그룹에서 연결된 비 NULL 값을 포함한 문자열의 결과를 반환합니다. 비 NULL 값이 없으면 NULL 을 반환합니다. 완전한 구문은 다음과 같습니다.

     GROUP_CONCAT ([DISTINCT] expr [, expr ...]
                  [ORDER BY { unsigned_integer | col_name | expr }
                      [ASC | DESC] [, col_name ...]
                  [SEPARATOR str_val )
    
     mysql> SELECT student_name,
         -> GROUP_CONCAT(test_score)
         -> FROM student
         -> GROUP BY student_name;
    

    또는 :

     mysql> SELECT student_name,
         -> GROUP_CONCAT(DISTINCT test_score
         -> ORDER BY test_score DESC SEPARATOR ' ')
         -> FROM student
         -> GROUP BY student_name;
    

    MySQL에서는,식이 조합을 연결 한 값을 얻을 수 있습니다. 중복 값을 제거하려면 DISTINCT 절을 사용합니다. 결과 값을 정렬하려면 ORDER BY 절을 사용합니다. 역순으로 정렬하려면 ORDER BY 구문으로 정렬 할 컬럼의 이름에 DESC (내림차순) 키워드를 추가합니다. 기본값은 오름차순입니다. 이것은 ASC 키워드를 사용하여 명시 적으로 지정할 수 있습니다. 그룹의 값 사이의 기본 구분 기호는 쉼표 ( " , ")입니다. 구분자를 명시 적으로 지정하려면 SEPARATOR 계속하여 그룹 값 사이에 삽입되는 문자열 리터럴 값을 지정합니다. 구분자를 완전히 제거하려면 SEPARATOR '' 를 지정합니다.

    결과는 group_concat_max_len 시스템 변수에 지정된 최대 길이로 절단됩니다. 그 변수의 기본값은 1024입니다. 더 높은 값으로 설정할 수 있지만 반환 유효한 최대 길이는 max_allowed_packet 값에 의해 제한됩니다. 실행시 group_concat_max_len 의 값을 변경하는 구문은 다음과 같습니다. 여기에서 val 는 부호없는 정수입니다.

     SET [GLOBAL | SESSION] group_concat_max_len = val ;
    

    반환 값은 인수가 아닌 바이너리와의 두 문자열인지에 따라 비 이진 문자열 또는 이진 문자열입니다. 결과 형식은 group_concat_max_len 가 512 이하인 경우 (이 경우, 결과의 형태는 VARCHAR 또는 VARBINARY 입니다)을 제외하고, TEXT 또는 BLOB 입니다.

    CONCAT() 와 CONCAT_WS() : 섹션 12.5 "문자열 함수" 를 참조하십시오.

  • MAX ([DISTINCT] expr )

    expr 의 최대 값을 반환합니다. MAX() 는 문자열 인수를 지정할 수 있습니다. 이런 경우는 최대 문자열 값이 반환됩니다. 섹션 8.3.1 "MySQL의 인덱스 사용 방법" 을 참조하십시오. DISTINCT 키워드를 사용하면 개별 expr 값의 최대를 찾을 수 있습니다. 그러나 DISTINCT 를 생략 한 것과 같은 결과가 생성됩니다.

    일치하는 행이없는 경우, MAX() 는 NULL 을 반환합니다.

     mysql> SELECT student_name, MIN(test_score), MAX(test_score)
         -> FROM student
         -> GROUP BY student_name;
    

    현재 MySQL의 MAX() 는 ENUM 및 SET 컬럼이 세트 내의 문자열의 상대 위치가 아니라 문자열 값에 비교됩니다. 이것은 ORDER BY 에 의한 비교 방법과는 다릅니다. 이것은 향후의 MySQL 버전에 반영 될 예정입니다.

  • MIN ([DISTINCT] expr )

    expr 의 최소치를 돌려줍니다. MIN() 는 문자열 인수를 지정할 수 있습니다. 이런 경우는 최소 문자열 값이 반환됩니다. 섹션 8.3.1 "MySQL의 인덱스 사용 방법" 을 참조하십시오. DISTINCT 키워드를 사용하면 개별 expr 값의 최소를 찾을 수 있습니다. 그러나 DISTINCT 를 생략 한 것과 같은 결과가 생성됩니다.

    일치하는 행이없는 경우, MIN() 는 NULL 을 반환합니다.

     mysql> SELECT student_name, MIN(test_score), MAX(test_score)
         -> FROM student
         -> GROUP BY student_name;
    

    현재 MySQL의 MIN() 는 ENUM 및 SET 컬럼이 세트 내의 문자열의 상대 위치가 아니라 문자열 값에 비교됩니다. 이것은 ORDER BY 에 의한 비교 방법과는 다릅니다. 이것은 향후의 MySQL 버전에 반영 될 예정입니다.

  • STD ( expr )

    expr 의 모집단 표준 편차를 반환합니다. 이것은 표준 SQL의 확장입니다. 대신, 표준 SQL 함수 STDDEV_POP() 를 사용할 수 있습니다.

    일치하는 행이없는 경우,이 함수는 NULL 을 반환합니다.

  • STDDEV ( expr )

    expr 의 모집단 표준 편차를 반환합니다. 이 함수는 Oracle과의 호환성을 보장하기 위해 제공되고 있습니다. 대신, 표준 SQL 함수 STDDEV_POP() 를 사용할 수 있습니다.

    일치하는 행이없는 경우,이 함수는 NULL 을 반환합니다.

  • STDDEV_POP ( expr )

    expr 의 어머니 표준 편차 ( VAR_POP() 의 제곱근)를 반환합니다. STD() 또는 STDDEV() 를 사용할 수 있습니다. 이들은 동일하지만 표준 SQL되지 않습니다.

    일치하는 행이 아니었다면 STDDEV_POP() 는 NULL 을 반환합니다.

  • STDDEV_SAMP ( expr )

    expr 의 표본 표준 편차 ( VAR_SAMP() 의 제곱근)를 반환합니다.

    일치하는 행이 아니었다면 STDDEV_SAMP() 는 NULL 을 반환합니다.

  • SUM ([DISTINCT] expr )

    expr 의 집계를 반환합니다. 반환 값 세트에 행이 포함되지 않은 경우 SUM() 는 NULL 을 반환합니다. DISTINCT 키워드를 사용하면 개별 expr 값만을 집계 할 수 있습니다.

    일치하는 행이없는 경우, SUM() 는 NULL 을 반환합니다.

  • VAR_POP ( expr )

    expr 의 파퓰레이션 표준을 돌려줍니다. 행은 표본이 아닌 전체 모집단으로 간주되기 때문에 줄 수가 분모로 간주됩니다. 또한 VARIANCE() 을 사용할 수도 있습니다. 이것은 동일하지만 표준 SQL되지 않습니다.

    일치하는 행이 아니었다면 VAR_POP() 는 NULL 을 반환합니다.

  • VAR_SAMP ( expr )

    expr 의 표본 분산을 반환합니다. 즉, 분모는 행 수에서 1을 뺀 것입니다.

    일치하는 행이 아니었다면 VAR_SAMP() 는 NULL 을 반환합니다.

  • VARIANCE ( expr )

    expr 의 파퓰레이션 표준을 돌려줍니다. 이것은 표준 SQL의 확장입니다. 대신, 표준 SQL 함수 VAR_POP() 를 사용할 수 있습니다.

    일치하는 행이없는 경우, VARIANCE() 는 NULL 을 반환합니다.


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