< 1 >
전체 집계 함수
SUM(컬럼명) : 총계
AVG(컬럼명) : 평균
MAX(컬럼명) : 최고
MIN(컬럼명) : 최저
COUNT(컬럼명) : 총 개수
컬럼 안의 데이터의 총계 ,평균 등을 구할 수 있다.
★ 전체 집계 함수 주의점!
전체 집계 함수 특징
1) 1건이 결과로 나온다.
2) 일반 컬럼과 같이 사용할수 없다 : 에러
< 2 >
부분 집계 함수
GROUP BY
사용법
GROUP BY 컬럼명, 컬럼명2 ...
주된 컬럼이 있고 그 컬럼안의 데이터의 집계를 내고 싶을때 쓰는 것 같다
예시를 들자면
1반 학생들의 평균과
2반 학생들의 평균을
보고싶을때 사용한다고 생각하면 될것같다.
음...
아예 적으면서 예를 들어보자
※
위와 같이 보고싶다면
학생들의 반 넘버 컬럼이 있기에 반별로 평균을 각각 보고싶다면
SELECT 학교 반 넘버 컬럼 , AVG(학생들의 점수 컬럼) FROM 학교
GROUP BY 학교 반 넘버 컬럼
학생들의 반 넘버 컬럼을 묶어 주면 된다.
< 3 >
HAVING 절
사용법
HAVING 조건식
자 그럼 이제 부분 집계를 했는데
또 여기서 조건을 붙이고 싶을 때 사용한다
이 아이는 GROUP BY 를 썻을 때만 따라오는 조건식으로
웬만해서 조건식은
HAVING 그룹함수(컬럼명) > 값
이런 느낌이 나오지 않을까 싶다.
위의 예제을 다시 들고와서 ㅋㅋ
교장 선생님이 와서는 반 평균 80점 아래는 다 쳐내버려!
라고 했다
그럼 이런식으로 될 것이다.
※
SELECT 학교 반 넘버 컬럼 , AVG(학생들의 점수 컬럼) FROM 학교
GROUP BY 학교 반 넘버 컬럼
HAVING AVG(학생들의 점수 컬럼) > 80
이해가 조금 됬으면 좋겠다.
★ GROUP BY 주의점!
그룹함수와 일반컬럼은 같이 사용할 수 없다.
= 왠만한 오류는 다 이곳에서 나올것이다.
단 , 컬럼별 집계에서 그 컬럼별을 그룹함수와 같이 사용할 수 있음
이게 무슨 말이냐....
전체 집계함수인 SUM과 AVG 같은 얘들 과
일반 컬럼인 학교 반 컬럼같은 얘들
을 같이 사용하지 못한다.
예시
== 사용 불가(에러) ==
SELECT 반 컬럼 , SUM( 학생들의 점수 ) FROM 학교
== 좋은 예시 ==
SELECT 반 컬럼 , SUM ( 학생들의 점수 ) FROM 학교
GROUP BY 반 컬럼
따라서 GROUP BY를 써서 반을 나눠야 에러가 뜨지 않는다
※ 여기까지의 정리 ※
전체 집계함수
뭐 다양하겠지만 대표적인 것들
SUM , AVG , MAX , MIN , COUNT 등
부분 집계 함수
GROUP BY 와
HAVING(조건식)
★ 전체 집계함수의 에러
일반 컬럼과 전체 집계함수는 같이 사용이 불가하다
이 에러를 잡는 법
부분 집계함수
일반 컬럼을 GROUP BY 시켜 전체 집계함수와 같이 사용이 가능하다.
'데이터베이스 > ORACLE_DB' 카테고리의 다른 글
Oracle_SQL - SubQuery (서브쿼리) (0) | 2023.09.12 |
---|---|
Oracle_SQL - JOIN (조인) (0) | 2023.09.11 |
Oracle_SQL - 자료형 변환 함수 (0) | 2023.09.08 |
Oracle_SQL - 내장함수(숫자/날짜) 몇가지 (0) | 2023.09.08 |
Oracle_SQL - 내장함수(문자 함수) 몇가지 (0) | 2023.09.08 |