ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Day2
    SQL 2021. 7. 17. 11:45
    728x90

    SQL 기초2

    단일행 함수


    • 대소문자 변환 함수

    함수 결과
    lower('SQL COURSE') sql course
    upper('sql course') SQL COURSE
    initcap('SQL Course') Sql Course
    ___
    • 문자 조작 함수

    함수 결과
    substr('HelloWorld',1,5) Hello
    length("HelloWorld') 10
    instr('HelloWorld','w') 6

    • 숫자 함수

    함수 결과
    ROUND(45.926) 45.93--------반올림
    TRUNC(45.926) 45.92-----------버림
    ___
    • 날짜 조작함수

    함수 결과
    MONTHS-BETWEEN 두 날짜 간의 월 수
    ADD-MONTHS 날짜의 월 추가
    LAST_DAY 월의 마지막 날

    TO_NUMBER:문자열을 숫자 형식으로 변환
    TO-DATE:문자열을 날자 형식으로 변환
    TO-CHAR(salary,'$999,999,999')숫자를 문자화한후 1000단위 부여


    NVL, NVL2함수


    • Null인 행을 실제 값으로 변환
    • 데이터 유형이 일치해야 됨
    • 사용할 숭 ㅣㅆ는 데이터 유형은 날짜, 문자 및 숫자
      NVL(commission_pct,0)//commission_pct가 null 이면 0
      

    NVL2(commission_pct, 'SAL+COMM','SAL')
    //commission_pct가 null이 아니면 SAL+COMM, null이면 SAL

    ___
    >## 조건부 표현식(CASE, DECODE)
    ___
    
    ```ts
    //case식
    
    select last_name, job_id, salary,
           CASE job_id when 'IT_PROG' then 1.10*salary
                       when 'ST_CLERK' then 1.15*salary
                       else salary END 
    from employee //직업이 'IT_PROG이면 월급*1.10,ST_CLERK이면 월급*1.15, 이외는 그냥 월급
    
    //DECODE식
    select last_name, job_id, salary
           DECODE(job_id, 'IT_PROG',1.10*salary
                          'ST_CLERK',1.15*salary
                          ,salary)
    from employee //의미는 위와 같다.

    그룹함수(AVG, COUNT, MAX, MIN, SUM)


    select avg(salary), max(salary), min(salary), sum(salary)
    
    //min과 max는 숫자, 문자 및 날짜데이터 유형에 사용 가능
    select min(hire_date), max(hire_date)
    from employees
    
    select count(*)//테이블의 행 수를 반환
    select count(commission_pct) //null이 아닌 값을 간진 행 수 반환

    GROUPY절,HAVING


    • GROUP BY 절을 사용하여 테이블의 행을 더 작은 그룹으로 나눌 수 있음
    • 그룹 함수에 속하지 않는 SELECT LIST의 모든 열을 GROUP BY 절에 있어야 함
    • HAVING절을 사용할 경우
    • 행이 그룹화
    • 그룹 함수가 적용
    • Having절과 일치하는 그룹이 표시
    SELECT deparmtment_id, job_id, AVG(salary)
    from employee
    groupy by department_id, job_id;
    
    //HAVING절 사용
    select department_id, max(salary)
    from employees
    groupy by department_id
    having MAX(salary)>10000;
    
    //그룹함수 중첩가능
    select max(avg(salary)) //급여 평균의 최대값

    'SQL' 카테고리의 다른 글

    Day5  (0) 2021.07.17
    Day4  (0) 2021.07.17
    Day3  (0) 2021.07.17
    Day1  (0) 2021.07.17

    댓글

Designed by Tistory.