저번 게시글에서 sampleDB를 이용해 WHERE 구의 사용과 연산자 등에 대해 살펴보았습니다.
Sample DB 설정 방법은 다음 링크를 참조하세요. (https://m-datastudy.tistory.com/5)
이번에는 SELECT ~ FROM 쿼리(구문)에 사용할 수 있는 여러가지 함수를 알아볼것입니다. 저번 게시물 (https://m-datastudy.tistory.com/9)를 보신 분들은 이제 원하는 조건을 지정해서 테이블로부터 레코드를 불러 올 수 있습니다.
그런데 만약 레코드의 개수가 엄청나게 많아서 개수조차 세기 힘들 때에는 어떻게 해야 할까요?
그럴 때는 집계함수를 이용해 한 컬럼 내의 레코드의 개수를 세거나 합과 산술평균 등을 낼 수 있습니다.
1. 집계함수 : COUNT(개수), SUM(총합), AVG(평균), GROUP BY(묶음)
◈ COUNT 함수는 컬럼내 레코드의 개수를 세주는 함수로 다음과 같이 사용합니다.
-> SELECT COUNT(컬럼명1) FROM 테이블명;
-> SELECT COUNT(컬럼명1), COUNT(컬럼명2), ... FROM 테이블명;
다음은 예시입니다.

COUNT 함수는 레코드의 자료형에 상관없이 사용할 수 있습니다.
다만 특별한 경우를 제외하면, 집계함수와 일반 컬럼을 함께 사용할 경우 오류가 발생합니다.
즉, 다음과 같은 경우에는 오류가 발생합니다.
-> SELECT COUNT(customerNumber), customerNumber FROM customers;
◈ SUM 함수는 컬럼 내 레코드 값의 총합을 내주는 함수입니다.
다음과 같이 사용합니다.
-> SELECT SUM(컬럼명1) FROM 테이블명;
-> SELECT SUM(컬럼명1), SUM(컬럼명2), ... FROM 테이블명;
다음은 예시입니다.

SUM 함수는 컬럼의 자료형이 숫자형일때만 사용할 수 있습니다.
그리고 같은 집계함수끼리는 다음과 같이 함께 사용할 수 있습니다.

◈ AVG 함수는 컬럼 내 레코드 값의 평균을 구해줍니다.
다음과 같이 사용합니다.
-> SELECT AVG(컬럼명1) FROM 테이블명;
-> SELECT AVG(컬럼명1), AVG(컬럼명2), ... FROM 테이블명;
다음은 예시입니다.

마찬가지로 AVG 함수는 컬럼의 자료형이 수치형일 때만 사용할 수 있습니다.
◈ GROUP BY 함수는 종류가 같은 것들이 하나로 묶입니다.
GROUP BY는 쿼리(구문)의 가장 마지막에 사용합니다. 기준을 제시하면, 그 기준에 따라 모아줍니다.
말로 설명하면 이해하기 힘들 수 있으므로 예시로 확인하겠습니다.

도시가 중복되는 것이 있는데 같은 도시가 여러번 나오기도 하고 중구난방으로 배열되어있어서 알아보기 힘듭니다.
그때 GROUP BY를 사용하면 더 보기 편해집니다. 중복되는 데이터는 하나로 모아줍니다.
그럼 다음과 같이 테이블 내에 표시된 모든 도시의 종류를 한번에 볼 수 있습니다.

GROUP BY 함수는 자료형 상관없이 사용할 수 있습니다.
그리고 다른 집계함수와 연계하여 사용하면 그 진가를 발휘합니다.

예외적으로 GROUP BY 함수에 기준으로 제시된 컬럼은 위와 같이 집계함수와 함께 사용될 수 있습니다.
또한 중요한 것으로 모든 집계함수는 WHERE구와 함께 사용할 수 없고, 대신 HAVING 구를 사용하여 조건식을 지정할 수 있습니다.
구문이 처리되는 순서는 GROUP BY -> SELECT -> ORDER BY 순으로 처리됩니다.
'SQL > mySQL' 카테고리의 다른 글
[mySQL] substring 함수, 그 외의 함수. (0) | 2020.02.05 |
---|---|
[mySQL] SELECT 구문의 확장. WHERE . (0) | 2020.01.17 |
[mySQL] SELECT - FROM 구문을 이용해 데이터 불러오기 (0) | 2019.12.04 |
[mySQL] 학습용 DB구축하기 (0) | 2019.12.04 |
[mySQL] Windows 10 mySQL server 설치 (0) | 2019.12.04 |