오라클 데이터 검색 – Column Function

이번 시간에는 SQL의 컬럼 함수에 대해 알아보겠습니다. 여러 개의 컬럼 함수(Column Function) 중에서 자주 사용되는 다섯 가지 정도만 실습하도록 하겠습니다.
컬럼 함수는 대개 계산과 연관된 것으로 오라클과 같은 데이터베이스에서는 그 활용도가 다소 낮은 부분이라고 할 수 있습니다. 그러나 기본적으로 알고는 계셔야 합니다. 간혹 필요하니까요.

  1. Column Functions의 뜻과 특성을 먼저 알아봅시다.
    • 컬럼 함수는 컬럼에 적용되는 함수입니다.
    • 컬럼 함수를 적용하면 검색 결과로 하나의 Row(레코드)만 Return합니다.
      이와는 다르게 다음 시간에 배울 스칼라 함수는 검색 결과로 여러 개의 레코드를 표시합니다.

    • 컬럼 함수를 적용하기 전에 WHERE 절의 조건에 만족한 ROW에 대해서만 함수가 적용됩니다.
    • 만약 Column내에 NULL 값이 있다면 그 Row는 포함시키지 않습니다.
  2. Column Function는 아래와 같은 것들이 있는데, 이름만 봐도 그 기능을 짐작할 수 있습니다. 개수를 구하는 COUNT, 평균을 구하는 AVG, 최대값은 MAX 등인데 그 결과로 당연히 하나의 결과만 나오겠죠. 평균이 여러 개이고 최대값이 여러 개일 수는 없으니까요.
    • COUNT(a) a Column의 행의 수를 구합니다.
    • AVG(a) a Column의 평균을 구합니다.
    • SUM(a)) a Column의 합계를 구합니다.
    • MIN(a)) a Column의 최소값을 구합니다.
    • MAX(a)) a Column의 최대값을 구합니다.
    • STDDEV(a)) a Column의 표준편차를 구합니다.
    • VARIANCE(a)) a Column의 분산을 구합니다.

    대표적인 몇 가지만 실습해 볼까요.

  3. 먼저 최소값을 구하는 MIN 함수입니다.
    • MIN 함수는 검색 결과 값 중 가장 작은 값을 Return합니다.(즉 검색 결과 중 가장 작은 값을 찾아 보여 줍니다.)
    • MIN 함수는 모든 Data 형에 사용할 수 있는데,
      • 만약 컬럼의 데이터가 숫자형(numeric)이면 가장 작은 수를
      • 문자형(character)이면 ASCII 코드 순으로 가장 작은 값을
      • 날짜형(date)이면 현재로부터 가장 오래된 시간을 찾아 표시합니다.
    • NULL 값은 무시합니다.
    • 실습해 봅시다. VIDEO 테이블에서 PLAY_TIME이 150 이상인 것 중에서 VIDEO_NO가 가장 작은 값을 구하려면….. 아래와 같이 하면 됩니다.
      SELECT MIN(VIDEO_NO)
      FROM VIDEO
      WHERE        PLAY_TIME >= 150;

      SQL*Plus를 실행해 직접 실습해 보세요.(아래에서 설명하는 다른 함수들도 한번씩은 꼭 실습해 보세요.)

  4. 최대값을 구하는 MAX 함수가 있는데, MIN 함수의 반대라고 생각하면 되죠.
    실습은 생략하겠습니다.

  5. 평균을 구하는 AVG 함수입니다.
    • AVG 함수는 대상 Column의 평균값을 구해서 Return합니다.
    • AVG함수는 숫자형(Numeric) 데이터를 가진 Column에만 사용할 수 있습니다.
    • 만약 중복된 값이 있는 경우 중복된 값은 한번만 적용하게 하려면 앞서 다룬 Keyword인 Distinct를 사용하면 됩니다.
    • AVG 함수도 NULL 값은 무시합니다.(즉 평균을 구할 때 NULL 값이 있는 데이터는 무시하고 구합니다.)
    • VIDEO 테이블에서 PLAY_TIME의 평균을 구하려면…
      SELECT AVG( PLAY_TIME )
      FROM VIDEO;

    • PLAY_TIME 중에서 중복된 값은 한번만 적용하여 다시 평균을 구하려면…
      SELECT AVG(DISTINCT PLAY_TIME )
      FROM        VIDEO;
  6. 합계를 구하는 SUM 함수에 대해 알아보죠.
    • 대상 Column의 합계를 Return합니다.
    • SUM 함수는 숫자형(Numeric) 데이터가 있는 Column에만 사용할 수 있습니다.
    • AVG와 마찬가지로 중복된 값이 있는 경우 한번만 적용하게 하려면 Distinct 키워드를 사용하면 됩니다.
    • SUM 함수도 NULL 값은 무시합니다.
    • VIDEO 테이블에서 PLAY_TIME의 전체 합계를 구해보세요.
      SELECT SUM( PLAY_TIME )
      FROM VIDEO;

    • PLAY_TIME이 같은 값은 한번만 적용하여 전체 합계를 다시 구하려면…
      SELECT SUM( DISTINCT  PLAY_TIME )
      FROM VIDEO;
  7. 마지막으로 행의 개수를 구하는 COUNT 함수입니다.
    • COUNT 함수는 조건에 만족하는 모든 Row(레코드)의 개수를 Return합니다.
    • 모든 데이터 형의 Column에 사용할 수 있습니다.
    • COUNT(column_name)을 사용하면 특정 Column의 개수를 구하고
    • COUNT(*)와 같이 사용하면 테이블 전체 Row(레코드)의 수를 구할 수 있습니다.
    • 중복된 값이 있는 레코드를 한번만 적용하게 하려면 Distinct를 사용하여 중복된 레코드를 제외한 전체 레코드의 개수를 구할 수 있습니다.
    • COUNT 함수도 NULL 값은 무시합니다.
    • VIDEO 테이블의 전체 행(레코드)의 수를 구하려면…
      SELECT COUNT( * )
      FROM        VIDEO;

    • VIDEO 테이블에서 PLAY_TIME에 값이 있는 행의 수를 구하되 PLAY_TIME이 같은 값이 여러 개일 경우 하나로 취급하여 개수를 구하려면…
      SELECT COUNT( DISTINCT  PLAY_TIME )
      FROM VIDEO;

전체적으로 이해하기가 어렵지 않은 내용이었을 것입니다.
이상 토요일 저녁, 동주 아빠 손병목이었습니다.

위로 스크롤