본문 바로가기
DB

[MySQL] 함수(Function) - 그룹(aggregate)

by 이잔디 2022. 3. 16.

집계(그룹, 집합) 함수

- 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등을 하나의 결과로 반환

- GROUP BY, HAVING과 함께 자주 쓰임

COUNT(필드명)  NULL 값이 아닌 레코드 를 리턴
SUM(필드명)  필드명에 해당하는 레코드 값의 합계 리턴
AVG(필드명)  각각의 그룹 안에서 필드명에 해당하는 레코드 값의 평균 리턴
MAX(필드명)  필드명에 해당하는 레코드 값 중 최대값을 리턴
MIN(필드명)  필드명에 해당하는 레코드 값 중 최소값을 리턴

 

COUNT

- NULL 값은 COUNT에 포함하지 않는다.

-- 테이블 생성, 
-- auto_increment는 무조건 pk로 설정해줘야 함! 
CREATE TABLE count_demos (
    id INT AUTO_INCREMENT,
    val INT,
    PRIMARY KEY (id)
);

-- 값 삽입
-- auto_increment는 삽입 안해도 자동으로 값 증가
INSERT INTO count_demos(val) 
VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);

-- 전체 출력
SELECT 
    *
FROM
    count_demos;

-- count 사용해서 출력
-- DISTINCT 중복 제거
SELECT 
    COUNT(id) '인덱스' , 	COUNT(val) '숫자',  COUNT(DISTINCT val) '중복제외 숫자'
FROM
    count_demos;

코드 결과 출력

SUM

CREATE TABLE sum_demo (
    n INT
);

INSERT INTO sum_demo(n) 
VALUES(1),(1),(2),(NULL),(3);

SELECT 
    *
FROM
    sum_demo;
    
SELECT 
    SUM(n) '합',  SUM(DISTINCT n) '중복제거 합' 
FROM
    sum_demo;

결과

AVG & MIN & MAX

-- AVG
SELECT 
    AVG(buyprice) 'Average Price'
FROM
    products;
  
-- MIN, MAX
SELECT 
    MIN(buyprice) 'Min Price', MAX(buyprice) 'Max Price'
FROM
    products;

buyprice 열 값의 avg, max, min 

 

 

참고

https://www.mysqltutorial.org/

 

MySQL Tutorial - Learn MySQL Fast, Easy and Fun.

MySQL Tutorial website provides you with the most comprehensive MySQL tutorial that helps you learn MySQL fast, easy & fun.

www.mysqltutorial.org