클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

다중행 함수와 데이터 그룹화 1 - 다중행 함수와 GROUP BY 본문

알고리즘 및 자료 관리/데이터베이스

다중행 함수와 데이터 그룹화 1 - 다중행 함수와 GROUP BY

huenuri 2024. 8. 21. 17:08

오라클 내장 함수에는 단일행 함수와 다중행 함수가 있다. 이전까지는 단일행 함수를 학습했지만, 이제는 여러 개의 행을 한번에 불러오는 함수에 대해서 공부해보려고 한다.
어제 저녁에 단일행 함수 부분을 학습했는데 보충한 부분이 있어서 내용을 추가해보았다.

여기서부터는 강의 내용이 있어 동영상을 보며 학습해볼 것이다.

 

학습 내용

다중행 함수

학습 시간

아침 7시 반 ~ 8시 반 <1시간 소요>


 

 

 

하나의 열에 출력 결과를 담는 다중행 함수

다중행 함수의 특징은 중요하니 꼭 기억하기로 하자! SQL 시험에서도 자주 출제된다고 한다.

 

 

 

 

집계 함수 = COUNT 함수

전에는 모든 행을 다 불러왔었는데 이젠 이렇게 행의 개수를 출력할 수 있게 되었다. 집계 함수는 COUNT 함수와 같은 말이다.
GROUP BY를 하지 않아도 출력이 잘 되는데 이미 GROUP BY가 되어 있는 상태이기 때문이다.

 

 

 

 

 

COUNT 함수와 GROUP BY를 같이 쓸 때

하지만 COUNT 함수와 일반 함수를 같이 쓰게 되면 애러가 난다. 이때 GROUP BY를 하면 출력이 잘 된다.

 

 

 

 

실습 문제

GROUP BY는 NULL 값이 제외되기 때문에 107개가 아닌 106개가 출력된다.

 

 

 

 

 

NULL 값을 포함시키고 싶을 때는 * 를 사용

 

 

 

 

합계를 구하는 SUM 함수

 

 

 

 

SUM 함수와 DISTINCT, ALL 함께 사용하기

 

 

 

 

최대값과 최소값을 구하는 MAX, MIN 함수

 

 

 

 

 

평균값을 구하는 AVG 함수

 

 

 

 

DISTINCT로 중복을 제거한 급여 열의 평균 급여 구하기


 

 

결과 값을 원하는 열로 묶어 출력하는 GROUP BY절

테스트 쿼리 생성

 

 

 

 

 

 

이 실습은 실행하기 어려울 것 같아 설명만 들어본다.

 

 

 

 

GROUP BY의 필요성

 

 

 

 

 

 

 

 

 

 

 

UNION을 사용할 수도 있지만 이렇게 하면 소속반의 정보가 보이지 않는다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GROUP BY절 기본 사용 방법

 

 

 

 

 

그룹화란 무엇인가?

 

 

 

 

부서를 그룹화하면 3개, 음료 종류를 하면 4개의 그룹화가 이루어진다.

 

 

 

 

 

 

행이 3개로 줄어들었다면 그룹화가 잘 된 것이다. 이 부분은 원래 선생님이 자료를 학생들에게 보내주어야 실습할 수 있는데, 난 수업을 듣지 못해 자료가 없다. 이런 식으로 그룹화가 진행된다는 것을 이해하면 것으로 학습을 진행하기로 했다.

이때 COUNT를 하면 소속반별 인원수가 출력된다.


 

 

 

GROUP BY 사용시 유의사항

성적이라는 컬럼은 출력이 되지만 일반 컴럼은 사용할 수 없다. 첫번째로 성적표가 실행되고 두번째로 과목의 그룹화가 된다. 이 과정에서 과목이 3개 줄어들지만, 성적은 그룹화가 아직 진행되지 않아 출력이 되지 않는다.

 


 

 

학습을 마치고

오늘의 새벽 공부는 여기까지 하려고 한다. GROUP BY까지는 마칠 수 있었다. HAVING절부터는 다음에 공부해볼 것이다. 이제 수업 갈 시간이 많이 빠듯하고 수업을 듣고 책도 보고 학습일지도 쓰랴 정말 바빴지만 그래도 그룹화가 무엇인지 어느 정도 이해할 수 있었다.

실습을 하지 못한 점이 아쉽기는 하지만 다음에 해볼 수 있는 기회가 있을 것 같다. 그러면 이제 갈 준비를 해야겠다~