IT 성장일기

[SQL] 함수 - 그룹 함수 본문

Database/SQL

[SQL] 함수 - 그룹 함수

고 양 2023. 11. 4. 14:48
반응형
함수 - 그룹 함수

모두의 SQL을 읽고 배운 것을 복습하기 위해 정리해서 기록합니다.
해당 도서는 Oracle 데이터베이스를 기준으로 하고 있습니다.

 

0. 그룹 함수

그룹 함수는 단일 행 함수와 달리 하나의 열의 여러 개의 행에 대하여 함수가 적용됩니다.
반 평균을 내거나 인원수를 세는 등 특정 집단에 대한 값을 가져오는 데 사용합니다.

 

1. 그룹 함수의 종류

COUNT : 열의 갯수

COUNT 함수는 열의 모든 행의 개수를 셉니다.

[COUNT(culumn)] 또는 [COUNT(*)] 의 형태로 사용합니다.


별표(애스터리스크)는 보통 '모든'이라는 의미로 사용하는데 따로 컬럼이름을 지정하지 않고 별표를 매개변수로 사용하면
NULL값을 포함한 테이블의 모든 행의 개수를 셉니다.

 

SUM, AVG : 합계와 평균

SUM은 열의 합계를 구하고 AVG는 열의 평균값을 구하는 함수입니다.
물론 데이터 타입은 숫자 타입이거나 숫자 형태의 문자열이어야합니다.


주의할 점은 간혹 열에 NULL 값이 포함되어 있는 경우 해당 함수를 사용하면 아주 간단한 쿼리라도 무시무시한 에러를 뱉어냅니다.
앞서 짚고 넘어갔던 대로 [NVL(culumn, 0)] 과 같이 NULL값을 처리해 주어야 정확한 값을 도출할 수 있습니다.

https://blushedblond.tistory.com/entry/SQL-4-%ED%95%A8%EC%88%98-%EB%8B%A8%EC%9D%BC-%ED%96%89-%ED%95%A8%EC%88%98-2

 

[SQL] 5. 함수 - 단일 행 함수 (2)

모두의 SQL을 읽고 배운 것을 복습하기 위해 정리해서 기록합니다 😁 해당 도서는 Oracle 데이터베이스를 기준으로 하고 있습니다. 0. 단일 행 함수 (1) 문자 타입 함수, 숫자 타입 함수, 날짜 타입

blushedblond.tistory.com

 

MAX, MIN : 최댓값과 최솟값

컬럼의 최댓값과 최솟값을 반환하는 함수입니다. 문자 타입의 컬럼이나 날짜 타입의 컬럼에도 적용할 수 있습니다.

문자 타입의 경우 a, A, ㄱ, ㅏ와 같이 순서가 빠른 값을 최솟값으로 반환하고, (사전순이라고 하죠😅)
날짜 타입의 경우 더 오래된 날짜를 최솟값으로 반환됩니다.

 

2. 진짜 그룹함수

앞서 훑어본 함수들은 하나의 열을 통째로 그룹으로 묶었습니다.
하지만 데이터를 다루다 보면 조회 한 데이터들을 여러 가지 소그룹으로 묶어야 하는 경우도 종종 생깁니다.

예를 들면 하나의 대학교 학생들을 학과로 묶거나, 같은 학과의 학생들을 성별 또는 학년으로 묶을 수도 있을 것입니다.😊

그럴  때 사용하는 것이 GROUP BY 절입니다.

GROUP BY 절은 테이블에서 조회한 데이터를 특정 값들을 기준으로 그룹화합니다. 
HAVING 절은 조건절인데, WHERE 절과 달리 그룹화된 값에 조건을 걸어줍니다.

제 데이터베이스에 진짜 테이블은 없지만... 학교를 하나의 테이블로 만들어서 예시 쿼리를 작성해 보겠습니다.

SELECT
    grade,
    class,
    COUNT(class) AS class_cnt
FROM
    MY_SCHOOL
WHERE
    grade  >  2
GROUP BY
    grade, 
    class
HAVING
    class_cnt > 20
ORDER BY
    grade

 

가장 먼저 MY_SCHOOL이라는 테이블에서 학년과 반을 조회하고 반별 인원수를 조회합니다.

학년이 2학년 보다 큰 (grade > 2) 데이터만 조회합니다.

가져온 데이터들을 가장 먼저 학년으로 묶어서 표시합니다. 그다음 학급을 기준으로 다시 분류합니다.

그룹화된 값들에 대해 인원이 20명이 넘는 반을 표시하도록 조건을 걸어줍니다.

조회된 데이터를 학년으로 정렬합니다.

 


 

기본적인 함수는 이렇게 마치겠습니다.

 

도움이 되어드렸다면 구독 / 좋아요 부탁드립니다.👏🏻

감사합니다.🙂

 

반응형

'Database > SQL' 카테고리의 다른 글

[SQL] 집합 연산자  (2) 2023.11.04
[SQL] 키와 제약 조건  (2) 2023.11.04
[SQL] 함수 - 단일 행 함수 (2)  (0) 2023.11.02
[SQL] 함수 - 단일 행 함수 (1)  (2) 2023.10.23
[SQL] 함수 - 함수의 종류  (0) 2023.09.18