04. 보고 싶은 데이터 요약하기 / 집계함수, GROUP BY
대량의 값들을 볼 때는 각각의 데이터를 보기보다는 통계를 뽑기도 한다. = 요약 통계
집계 함수 : 여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수! 실습 링크
>SELECT COUNT(*)
FROM Products
>> Products 테이블에 있는 전체* 데이터 행의 수를 세어준다.
ID | Name | Visits |
1 | A | 1 |
2 | A | 2 |
3 | B | 3 |
4 | C | 5 |
5 | Null | Null |
>SELECT COUNT(*) FROM sample; → 5 전체 데이터 행의 수
>SELECT COUNT(Name) FROM sample; → 4 Null값 제외
>SELECT COUNT(DISTINCT Name) FROM sample; → 3 Null값 제외+중복값 제외
SUM : 숫자 컬럼을 가진 데이터의 총 합계를 구해준다.
MAX : 숫자 컬럼을 가진 데이터의 최대값을 구해준다.
MIN : 숫자 컬럼을 가진 데이터의 최소값을 구해준다.
>SELECT ___(Price)
FROM Products
>> Products 테이블의 Price 데이터의 ___
AVG : 숫자 컬럼을 가진 데이터의 평균값을 구해준다.
*단, Null 값을 주의할 것. 위 표를 기준으로
>SELECT AVG(Visits) FROM sample; → (1+2+3+5)/4 = 2.75 *Null값을 없는 데이터로 치고 싶을 때
>SELECT SUM(Visits)/COUNT(*) FROM sample; → (1+2+3+5)/5 = 2.2 *Null값을 0으로 치고 싶을 때
GROUP BY : 특정 카테고리별로 나눠서 집계함수를 사용할 수 있도록 해준다.
ex. 판매 기록에서 봤을 때 지역별 판매한 금액, 연령대별 고객 수 등등..
>SELECT SupplierID, AVG(Price)
FROM Products
GROUP BY SupplierID
>> Products 테이블에서 공급자별 평균 판매금액을 구한다.
*여러 기준으로 보고 싶을 때는 콤마로 묶는다.
>SELECT SupplierID
, CategoryID
, AVG(Price) *코드 가독성을 위한 띄어쓰기 팁~
FROM Products
GROUP BY SupplierID, CategoryID
-- ORDER BY AVG(Price) *오더바이는 그룹바이 뒤에
>> Products 테이블에서 공급자별 평균 판매금액, 품목별 평균 판매금액을 구한다.
HAVING : '특정 카테고리별로 나뉜 결과물'에 조건을 달아 보고 싶을 때. =/= WHERE
>SELECT SupplierID
, CategoryID
, AVG(Price)
FROM Products
GROUP BY SupplierID
WHERE Price >= 100
>> SQL내부 실행 순서에 따라 WHERE절이 GROUP BY보다 앞서 실행되기 때문에, 코드가 실행되지 않는다.
>SELECT SupplierID
, CategoryID
, AVG(Price)
FROM Products
GROUP BY SupplierID, CategoryID
HAVING AVG(Price)>=100 *HAVING은 반드시 GROUP BY와 함께!
>> GROUP BY 다음에 HAVING이 실행되기 때문에, 문제 없이 실행된다.
공급자별 평균 판매 금액, 품목별 평균 판매 금액을 구하되 평균 판매 금액이 100 이상인 항목만 보여준다.
AS : 데이터값의 이름을 지어준다.
>SELECT SupplierID
, CategoryID
, AVG(Price) AS avg_price
FROM Products
GROUP BY SupplierID, CategoryID
HAVING avg_price >=100
[집계함수 연습문제]
연습문제 링크3 *WHERE은 FROM 뒤에!!!
rounded down to the nearest integer = 반올림하여 소수점 없이
[GROUP BY 연습문제]
'기초 > SQL' 카테고리의 다른 글
05. 조건문 CASE, 테이블 피봇 (0) | 2020.12.29 |
---|---|
03. ORDER BY, 문자열 자르기 + 주석 처리 (0) | 2020.12.20 |
02. 비교연산자, 논리연산자 / LIKE, IN, BETWEEN, IS NULL (0) | 2020.12.19 |