코딩하는 문과생
[SQL] 3. Additional SELECT 본문
[단일함수와 그룹함수]
- 단일 행 함수: input n개, output n개
- 그룹 함수: input n개, output 1개
# select와 where절에 함수 적용이 가능하다.
[단일함수의 예]
# 문자열 함수:
- NUMBER LENGTH(string),
- <중요> NUMBER INSTR( string, substring, [ position, [ occurrence ] ] ) - position은 index or 찾는 방향, occurence는 찾는 횟수
SELECT INSTR(EMAIL, '.')
FROM EMPLOYEE;
SELECT INSTR(EMAIL, 'c', -1, 2)
FROM EMPLOYEE;
SELECT INSTR(EMAIL, 'c', INSTR( EMAIL, '.')-1 )
FROM EMPLOYEE;
// 두번째와 같은 결과
// 함수가 함수를 중첩시킨다.
- LPAD(): 왼쪽에 패딩 주기
- RPAD(): 오른쪽에 패딩 주기
SELECT EMAIL AS 원본데이터,
LENGTH(EMAIL) AS 원본길이,
LPAD(EMAIL, 20, '.') AS 적용결과,
LENGTH(LPAD(EMAIL, 20, '.')) AS 결과길이
FROM EMPLOYEE ;
//*********************************
SELECT EMAIL AS 원본데이터,
LENGTH(EMAIL) AS 원본길이,
RPAD(EMAIL, 20, '.') AS 적용결과,
LENGTH(RPAD(EMAIL, 20, '.')) AS 결과길이
FROM EMPLOYEE ;
- LTRIM(string, str): 왼쪽 자르기
- RTRIM(string, str): 오른쪽 자르기
- TRIM( LEADING|TRAILING|BOTH trim_char from trim_source): 양쪽 자르기
SELECT LTRIM('xyxzyyTech', 'xyz')
FROM DUAL;
//Dual은 더미테이블
//결과 : Tech
//CharType에서 공백 제거 후 문자열 비교시 사용
//****************************************
SELECT TRIM(BOTH '1' FROM '123Tech111')
FROM DUAL;
//결과: 23Tech
- <중요>CHRACTER SUBSTR(string, position, [length])
SELECT SUBSTR('This.is.a.test', 6, 2)
FROM DUAL;
//결과: is
SELECT SUBSTR('This.is.a.test', 6)
FROM DUAL;
//결과: is.a.test
# 숫자 함수:
- ROUND( number, [decimal_places] ) : 반올림
SELECT ROUND(125.315, 1)
FROM DUAL;
//125.3
SELECT ROUND(125.315, -1)
FROM DUAL;
//130
- TRUNC( number, [decimal_places] ) : 단순 절삭
SELECT TRUNC(125.315, 1)
FROM DUAL;
//125.3
SELECT TRUNC(125.315, -1)
FROM DUAL;
//120
# 날짜 함수:
- SYSDATE: 지정된 형식으로 현재 날짜와 시간을 표시하는 함수
- ADD_MONTH( date, N ): 지정한 만큼의 달 수를 더한 날짜를 반환하는 함수
SELECT EMP_NAME, HIRE_DATE, ADD_MONTHS(HIRE_DATE, 240)
FROM EMPLOYEE;
- MONTHS_BETWEEN(date1, date2) : 지정한 두 날짜 사이의 월 수를 반환하는 함수
// 오늘 날짜를 기준으로 근속년수가 20년이상인
// 사원의 이름, 입사일, 근속년수, 직급, 부서를 조회하라.
SELECT EMP_NAME AS "이름",
HIRE_DATE AS "입사일",
ROUND(MONTHS_BETWEEN(SYSDATE, HIRE_DATE) / 12) AS "근속년수",
JOB_ID AS "직급",
DEPT_ID AS "부서"
FROM EMPLOYEE
WHERE MONTHS_BETWEEN(SYSDATE, HIRE_DATE) > 240;
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 5. Additional SELECT(3) (0) | 2020.01.21 |
---|---|
[SQL] 4. Additional SELECT(2) (0) | 2020.01.21 |
[SQL] 2. SQL 기초 & SELECT (0) | 2020.01.20 |
[SQL] 1. 환경 설정 (0) | 2020.01.20 |
[SQL] 프로그래머스, '고양이와 개는 몇 마리 있을까' (0) | 2020.01.04 |