본문 바로가기
DB/DBMS

DBMS - 집계함수, ORDERBY,CASE

by 코딩하는 랄로 2023. 8. 14.
728x90

집계함수

저번 글에서 다루었던 숫자형 함수 이외에도 Oracle DBMS 에서는 집계함수도 제공하고 있습니다. 집계 함수란 평균, 합계 등 특정 데이터 값을 집계하여 보여주는 편리한 기능을 제공해주는 함수이다.

 

집계함수를 사용할 때 주의할 점은 NULL값은 집계하지 않고 계산한다는 점과 값을 반환하기 때문에 WHERE절이 나닌 SELECT문에서 사용한다는 점이다.

 

  • AVG(COLUMN) : 해당 칼럼의 모든 값의 평균
  • MAX(COLUMN) : 해당 칼럼의 값 중 최댓값
  • MIN(COLUMN) : 해당 칼럼의 값 중 최솟값
  • SUM(COLUMN) : 해당 칼럼의 모든 값의 합
  • COUNT(COLUMN) : 해당 칼럼의 값 개수

만약 NULL을 포함한 집계를 하고 싶다면 저번글에서 배운 NVL함수를 사용하면 해결이 된다. 예를 들어 NULL값을 포함한 모든 값을 COUNT한다고 가정해보자.

 

SELECT COUNT(NVL(칼럼명, 0)) FROM 테이블명;

 

 

 

ORDER BY

테이블을 조회하다 보면 특정 칼럼에 대해서 내림차순, 오름차순 등으로 정렬해서 보고 싶은 경우가 있다. 이 때 사용하는 문법이 ORDER BY 문법이다.

 

SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC -- 오름차순
SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC -- 내림차순

 

기본적으로 ORDER BY만 사용할 때에 DEFAULT로 오름차순으로 정렬된다. 또한 컬럼명 대신 해당 컬럼명의 순서를 작성하여도 된다. 예를 들어, (ID, NAME, HEIGHT)의 칼럼을 가지는 테이블에서 HEIGHT 칼럼을 기준으로 정렬하고 싶다면 HEIGHT 대신 3을 적어도 된다.

 

추가로 키와 몸무게에 대한 정보가 있는 테이블에서 키를 오름차순으로 정렬하고 몸무게에 대해서도 오름차순으로 정렬하고 싶다면 순서대로 칼럼명을 나열하면 된다.

 

SELECT * FROM 테이블명 ORDER BY 컬럼명1, 컬럼명2; -- 오름차순

 

 

CASE문

case문은 C,JAVA 등 프로그래밍 언어에서 자주 사용하는 if-else 문과 같은 개념이다. 해당 컬럼 값을 조건식에 맞게 여러 값을 할당할 수 있게 하는 문법이기 때문에 SELECT문에서 사용한다. 전체 적인 사용 구조로는 다음과 같다.

 

SELECT
CASE
	WHEN 조건식 THEN 값
    	ELSE '값'
END
FROM 테이블명;

 

WHEN이 IF문에 해당하는 부분이다. WHEN 조건식을 만족할 경우 THEN 을 통해 지정한 값을 배정받게 되는 것이다. WHEN 조건식은 여러개 사용할 수 있다.

 

ELSE 는 위에 있는 WHEN 조건식 모두 해당하지 않을 때 지정한 값을 할당한다는 의미이다. 이 후 END를 통해 CASE문이 끝났음을 알린다.

 

 

중첩 CASE문 

ELSE문에 CASE문을 추가함으로써 중첩 CASE문도 사용이 가능하다.

 

SELECT
CASE
	WHEN 조건식 THEN 값
    	ELSE (
        	WHEN 조건식 THEN 값
            	ELSE 값
            	END
        )
END
FROM 테이블명;

 

이 때에 중첩 CASE문에도 END를 필수적으로 써야 한다.

 

 

 

2023.08.15 - [Programming 공부/DBMS] - DBMS - GRUOP BY, SUB QUERY

 

DBMS - GRUOP BY, SUB QUERY

GRUOP BY GROUP BY는 특정 컬럼을 기준으로 집계를 내는데 사용이 되는 함수이다. 즉, 특정 컬럼에서 같은 값을 가지는 데이터끼리 그룹을 지어서 보여준다. ID NAME POSITION TEAM_ID 1 홍길동 MF 232 2 이순신

codingralro.tistory.com

 

728x90

'DB > DBMS' 카테고리의 다른 글

DBMS - Optimizer, Hint  (0) 2023.08.15
DBMS - GRUOP BY, SUB QUERY  (0) 2023.08.15
DBMS - NULL, 숫자형 함수  (0) 2023.08.14
DBMS - 정규화(NF) : 이상현상  (0) 2023.08.14
DBMS - 정규화(NF) : 정규화란?  (0) 2023.08.14