훈스비
개발잡부
훈스비
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • 스터디 (29)
      • 데이터 분석 (4)
      • SQL (4)
      • Python (1)
      • JavaScript (1)
      • Spark (1)
      • DevOps (7)
      • 기타 (8)
      • 검색 엔진 (3)
    • 나의 이야기 (4)
      • 회사 생활 (3)
    • 사이드 프로젝트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Docker
  • elasticsearch
  • flask
  • GCP
  • github copilot
  • helm
  • java
  • jupyterhub
  • k8s
  • Kubernetes
  • leetcode
  • linux
  • ncp
  • Ray
  • ReplicaSet
  • spark
  • spring
  • sql
  • udemy
  • Virtualization
  • vm
  • vsCode
  • vue
  • 개발원칙
  • 검색엔진
  • 데이터 분석
  • 랭킹
  • 백엔드
  • 사이드프로젝트
  • 유사도 정규화

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
훈스비

개발잡부

스터디/SQL

[SQL] SQL 기초교재 07 ~ 09

2019. 8. 3. 15:28

7장 기본 함수 배우기

 

1. 문자 함수

함수설명

LOWER 소문자로 변환
UPPER 대문자로 변환
LENGTH 문자의 길이 반환
SUBSTR 문자 값 중 원하는 길이만큼 반환
RTRIM 문자열 오른쪽 공백 제거
LTRIM 문자열 왼쪽 공백 제거
TRIM 문자열 양쪽 공백 제거
REPLACE 특정 문자열을 다른 문자열로 대체
COALESCE 조건에 따라 여러 가지 값으로 치환
INTCAP 첫 글자를 대문자, 나머지를 소문자로 변환

2. 숫자 함수

함수설명

ROUND 소수점의 자릿수를 지정하여 반올림
TRUNC 해당 소수점 자리에서 잘라낼 때 사용
MOD(M, N) M을 N으로 나눈 나머지
ABS 값을 절대값으로 변환할 때 사용
SIGN 숫자가 양수면 1, 음수면 -1, 0이면 0을 반환
SORT 값의 제곱근을 반환
COS 값의 COSINE값 반환
SIN 값의 SINE값 반환
PI 값의 파이값 반환
TAN 값의 TANGENT값 반환

 

EX1) PROD_SALES 테이블을 사용하여 정수 첫째 자리에서 반올림한 제품 판매금액을 계산한 후 별칭을 SALES_REV로 설정

  • SELECT PROD_ID, TOTAL_SALES, 
              ROUND(TOTAL_SALES, -1) AS SALES_REV
    FROM PROD_SALES;

3. 날짜 함수

함수설명비고

ADD_MONTHS 지정한 날짜에 개월 수를 더한 값 출력  
SYSDATE 현재 시스템의 날짜 데이터 반환 ACCESS는 NOW()
ORACLE은 SYSDATE
SQL SERVER는 GATEDATE()
LAST_DAY 해당 월의 마지막 날짜 반환 ORACLE에서 제공하는 함수
MONTH_BETWEEN 지정한 월 간의 월 수 반환 ORACLE에서 제공하는 함수

 

 


8장 함수 활용하기

 

1. 기술통계 함수

함수설명비고

COUNT 행의 수 반환 NULL값을 포함한 전체 행의 수 : COUNT(*)
NULL값을 제외한 전체 행의 수 : COUNT(열 이름)
중복을 제외한 행의 수 : COUNT(DISTINCT 열 이름)
SUM 행의 합계 반환  
AVG 행의 평균 반환  
MAX 행의 최댓값 반환  
MIN 행의 최솟값 반환  
STDENV 행의 표준편차 반환  
VARIANCE 행의 분산 반환  

 

기술통계 함수들은 기본적으로 NULL값을 제외하여 계산한다.

따라서 NULL값을 0으로 보고 계산하려면 COALESCE 함수를 사용한다.

 

EX1) STUD_SCORE 테이블을 사용하여 영어 점수의 평균 출력

    • SELECT AVG(COALESCE(ENG_SCORE, 0)) AS ENG_AVG
      FROM STUD_SCORE;

 

2. 조건문 - CASE WHEN

    • SELECT 열 이름1,
                       CASE WHEN 조건1 THEN 결과값1
                       CASE WHEN 조건2 THEN 결과값2
                       ELSE 결과값3 END AS 새로운 열 이름
      FROM 테이블명;

 

EX2) CLERK는 7%, OFFICER는 5%, MANAGER는 3% 연방 인상할 경우에 STAFF_SAL 테이블을 사용하여 각 직원별 인상 연봉을 계산

    • SELECT ID, JOB, CURRENT_SAL,
                       CASE WHEN JOB = 'CLERK' THEN CURRENT_SAL * 1.07
                       CASE WHEN JOB = 'OFFICER' THEN CURRENT_SAL * 1.05
                       CASE WHEN JOB = 'MANAGER' THEN CURRENT_SAL * 1.03
                       ELSE CURRENT_SAL 
                       END AS NEXT_SAL
      FROM STAFF_SAL;

 

DB에 따라서 DECODE 함수도 사용 가능하다.

DECODE(열 이름, 조건1, 결과값1,

                                   조건2, 결과값2, 기본값) 새로운 열 이름

과 같은 형태로 사용할 수 있다.

 

EX3) CASA_201312에서 12월 수신평균잔액이 11월보다 10% 증가 시 오퍼를 제공할 때 오퍼를 제공해야할 고객은 1, 아니면 0으로 분류하여 OFFER_ACCEPT로 별칭 부여

    • SELECT CUST_ID, CUST_SEG, BALANCE_201311, BALANCE_201312,
                       CASE WHEN BALANCE_201312 >= BALANCE_201311 * 1.1 THEN 1
                       ELSE 0
                       END AS OFFER_ACCEPT
      FROM CASA_201312;

 


 

9장 데이터의 그룹화, 필터링

 

1. 그룹화 함수

    • SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수
      FROM 테이블명
      WHERE 조건절
      GROUP BY 열 이름1, 열 이름2;
      ORDER BY 열 이름1;
    • SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수
      FROM 테이블명
      WHERE 조건절
      GROUP BY 1, 2;

그룹화될 열에 NULL값을 포함할 경우 NULL값도 그룹화된다.

 

2. 그룹화된 데이터의 필터링

    • SELECT 그룹화할 열 이름1, 집계 함수
      FROM 테이블명
      WHERE 조건절
      GROUP BY 열 이름1
      HAVING 집계 함수 조건;

 

EX1) 구매금액의 평균이 7만원 이상인 고객 데이터 출력

    • SELECT CUST_NM, AVG(SALES_AMT) AS AVG_SALES_AMT
      FROM PROD_SALES
      GROUP BY CUST_NM
      HAVING AVG( SALES_AMT) >= 70000;

그룹화 필터링 이후 ORDER BY를 사용한다.

WHERE 조건절의 조건은 데이터가 그룹화되기 전에 필터링하고, HAVING 조건절은 그룹화 이후의 필터링이다.

 

저작자표시 비영리 변경금지 (새창열림)

'스터디 > SQL' 카테고리의 다른 글

[SQL] SQL 기초교재 10 ~ 12  (0) 2019.08.03
[SQL] SQL 기초교재 04 ~ 06  (0) 2019.08.03
[SQL] SQL 기초교재 01 ~ 03  (0) 2019.08.03
    '스터디/SQL' 카테고리의 다른 글
    • [SQL] SQL 기초교재 10 ~ 12
    • [SQL] SQL 기초교재 04 ~ 06
    • [SQL] SQL 기초교재 01 ~ 03

    티스토리툴바