8장(그룹 함수 사용하기)
데이터를 실제로 가져오지 않고 데이터를 요약해야 할 때가 있다. SQL은 이런 목적을 위해 특별한 함수를 제공한다.
데이터 조작 함수와는 달리 대다수의 SQL 환경에서 거의 비슷하게 지원된다.
AVG(): 컬럼의 평균값을 반환한다
COUNT():컬럼에 있는 행 개수를 반환한다
MAX():컬럼의 최대 값을 반환한다
MIN():컬럼의 최소 값을 반환한다
SUM(): 컬럼의 합계를 반환한다
AVG() 함수
테이블에 있는 행의 수와 각 행의 합을 계산해 지정된 컬럼의 평균값을 반환한다. 또 모든 컬럼의 평균값을 구하거나 컬럼을 지정하여 평균값을 구할 수 있다.
이 구문과 이전 구문 차이는 where절에 있다. Where절에서 vend_id가 DLL01인 제품만을 가져오도록 필터링하기 때문에 avg_price는 그 판매처의 제품 가격만 평균을 내어 반환한다.
하나의 컬럼만 사용 가능한 AVG()함수
AVG()는 단일 숫자 컬럼 평균값을 구하는 데 사용할 수 있으며, 파라미터로 컬럼명을 적어주어야 한다.여러 컬럼에 대한 평균값을 얻고 싶다면 여러 개의 AVG()함수를 사용해야한다.
COUNT() 함수
말 그대로 행의 개수를 세는 함수이다.
테이블에 있는 모든 행의 수를 세기 위해 count(*)를 사용한다. Nulll값을 가진 컬럼도 포함한다.
지정한 컬럼에 값이 있는 행의 수를 세기 위해 COUNT(컬럼명)을 사용한다. NULL 값을 가진 행은 무시된다.
값에 관계없이 모든 행을 세는 COUNT(*)
이메일을 가진 컬럼만을 세기 위해 cust_email을 사용했다.
MAX()함수
MAX()는 테이블에서 가장 큰 값을 반환한다.
문자 컬럼에서 MAX()를 사용하면 가장 마지막에 있는 행을 반환한다.
NULL값을 가진 행은 무시한다.
MIN()함수
MIN()은 가장 저렴한 제품 가격을 반환했다.
문자 컬럼에서 MIN()을 사용하면 가장 처음에 있는 행을 반환한다.
NULL값을 가진 행은 무시한다
SUM() 함수
SUM()함수는 주문된 제품의 총 수량을 반환한다. 그리고 WHERE절은 합계를 내려고 하는 주문을 명시한다.
SUM()을 사용해서 합계를 구할 수도 있다.
제품의 가격과 수량을 계산해서 총액을 반환한다.
여러 컬럼에서의 계산 수행, 모든 그룹 함수는 표준 수학 연산자를 사용하여 다중 컬럼에 대한 계산을 수행할 수 있다.
SUM()함수는 NULL 값을 가진 행을 무시한다.
중복되는 값에 대한 그룹 함수
ALL을 쓰거나 아무 인자도 쓰지 않으면 모든 행에 대한 계산을 수행한다.(ALL은 기본값)
중복되는 값을 제거하기 위해 DISTINCT라는 인자를 쓴다.
평균 값이 높아졌는데, 이는 낮은 가격의 제품이 여러 개 있었기 때문이다.
그룹함수 결합하기
하나의 SELECT문에서 한 번에 네 개의 그룹 함수를 수행하고 네 개의 값을 반환한다.