2020.12.07 일지
오늘의 요약
#1-2. 함수( function )
(1) 함수(function) 란 ? (처리/반환)
어떠한 일을 수행하는 기능으로써 주어진 인수(argument)
를 재료로 '처리'를 하여 그 결과를 '반환'하는 일을 수행
(2) 함수 기능의 구체적 표현
1) Data에 대한 '계산'
2) Data를 다른 형태로 '변환'
3) Data의 결과를 '출력'
(3) 함수의 종류
1) 단일행 함수 (ex: nvl, .. )
-> 하나의 행(row)당, 하나의 결과값을 리턴하는 함수
SQL> select ename, nvl(comm, 0) from emp where comm is null;
2) 복수행 함수 (ex: max, min, avg, .. )
-> 여러개의 행(row)당, 하나의 결과값을 리턴하는 함수
SQL> select avg(SAL) from EMP;
(4) 단일행 함수
1) 문자 함수
<1> chr(아스키코드)
SQL> select chr(65) from dual;
<2> concat(컬럼명, '붙일문자열')
SQL> select ENAME||' is a ' ||JOB from EMP;
SQL> select concat(ENAME, ' is a '), JOB from EMP;
<3> initcap('문자열')
SQL> select initcap('the lion') from dual;
INITCAP 함수는 매개변수로 들어오는 char의 첫 문자는 대문자로, 나머지는 소문자로 반환하는 함수다
<4> lower('문자열')
SQL> select lower('MY NAME IS KHS') from dual;
SQL> select lower(ename) from emp;
<5> LPAD('문자열1', 자리수, '문자열2')
LPAD 함수는 지정한 길이 만큼 왼쪽부터 특정문자로 채워준다.
- 함수 : LPAD("값", "총 문자길이", "채움문자")
SQL> select LPAD('khs', 13, '*#') from DUAL;
SQL> select LPAD('khs', 13, ' ') from DUAL;
<6> RPAD('문자열1', 자리수, '문자열2')
SQL> select RPAD('khs', 13, '*#') from DUAL;
<7> LTRIM('문자열1', '문자열2')
SQL> select LTRIM('xyxXxyLAST WORDxy', 'xy') from DUAL;
SQL> select LTRIM('xyyXxyLAST WORDxy', 'xy') from DUAL;
SQL> select LTRIM(' LAST WORDxy', ' ') from DUAL;
SQL> select LTRIM(' LAST WORDxy') from DUAL;
<8> RTRIM('문자열1', '문자열2')
SQL> select RTRIM('xyxXxyLAST WORDxy', 'xy') from DUAL;
SQL> select RTRIM('xyxXxyLAST WORDxyx', 'xy') from DUAL;
SQL> select RTRIM('WORD ', ' ') from DUAL;
SQL> select RTRIM('WORD ') from DUAL;
SQL> select length('WORD ') from dual;
SQL> select length(rtrim('WORD ')) from dual;
<9> REPLACE('문자열1', '문자열2', '문자열3')
SQL> select 'JACK and JUE' from DUAL;
SQL> select replace('JACK and JUE', 'J','BL') from DUAL;
SQL> select DNAME from DEPT;
SQL> select replace(DNAME, 'A', 'i') from DEPT;
<10> SUBSTR('문자열', 자리수, 갯수)
SQL> select SUBSTR('ABCDEFG', 3, 2) from DUAL;
-- ename의 두번째 자리가 'A'인 사원의 이름을 출력
SQL> select ENAME from EMP where ENAME like '_A%';
SQL> select ENAME from EMP where substr(ENAME,2,1)='A';
<11> ASCII('문자')
SQL> select ascii('A') from dual;
SQL> select ASCII('"') from DUAL;
SQL> select ASCII('#') from DUAL;
SQL> select ASCII('3') from DUAL;
<12> LENGTH('문자열')
SQL> select length('진달래 꽃') from DUAL;
SQL> select length('abC D') from DUAL;
<13> GREATEST('문자열1', '문자열2', '문자열3')
SQL> select GREATEST('CC', 'ABCDE', 'CA') from DUAL;
SQL> select GREATEST('12', '132', '119') from DUAL;
SQL> select GREATEST('가나', '가다', '가자') from DUAL;
<14> LEAST('문자열')
SQL> select LEAST('CC', 'ABCDE', 'CA') from DUAL;
SQL> select LEAST('12', '132', '119') from DUAL;
SQL> select LEAST('가나', '가다', '가자') from DUAL;
<15> INSTR('문자열1', '문자열2', 자리수1, 자리수2)
SQL> select INSTR('CORPORATE FLOOR', 'OR', 3, 2) from DUAL;
SQL> select INSTR('CORPORATE FLOOR', 'OR', 6, 1) from DUAL;
cf) '자리수1'부터 '자리수2'번째의 '문자열2'를 찾음
<16> NVL(컬럼명, 숫자) **
SQL> select ENAME, NVL(COMM, 100) from EMP;
SQL> select ENAME, NVL(COMM, 0) from EMP;
2) 숫자 함수
<1> ABS(숫자)
SQL> select ABS(-15) from DUAL;
<2> CEIL(숫자)
SQL> select CEIL(11.012) from DUAL;
SQL> select CEIL(-11.012) from DUAL;
<3> FLOOR(숫자)
SQL> select FLOOR(12.999) from DUAL;
SQL> select FLOOR(-12.999) from DUAL;
<4> ROUND(숫자)
SQL> select ROUND(12.5) from DUAL;
SQL> select ROUND(-12.5) from DUAL;
<5> COS(숫자[rad])
SQL> select cos(90 * 3.141592653589793/180) from dual;
<6> SIN(숫자[rad])
SQL> select sin(90 * 3.141592653589793/180) from dual;
<7> TAN(숫자[rad])
SQL> select TAN(45 * 3.141592653589793/180) from DUAL;
<8> EXP(숫자)
SQL> select EXP(2) from dual;
<9> LOG(숫자1, 숫자2)
SQL> select LOG(10, 100) from dual;
<10> MOD(숫자1, 숫자2)
SQL> select mod(11,4) from dual;
<11> POWER(숫자1, 숫자2)
SQL> select power(3, 3) from dual;
<12> TRUNC(숫자1, 숫자2)
SQL> select TRUNC(15.789, 2) from DUAL;
SQL> select TRUNC(15.789, 0) from DUAL;
SQL> select TRUNC(-15.789, 2) from DUAL;
3) 날짜 함수 (***)
<1> SYSDATE
SQL> select SYSDATE from dual;
<2> ADD_MONTHS(날짜컬럼 or 날짜데이터, 숫자)
SQL> select HIREDATE from EMP where EMPNO=7782;
SQL> select HIREDATE, ADD_MONTHS(HIREDATE, 7) from EMP where EMPNO=7782;
SQL> select ADD_MONTHS('90/11/04', 2) from DUAL;
<3> LAST_DAY(날짜컬럼 or 날짜데이터)
SQL> select LAST_DAY('19/10/29') from DUAL;
SQL> select hiredate, LAST_DAY(hiredate) from EMP;
<4> NEW_TIME(날짜컬럼or날짜데이터, 'GMT', 'PDT')
SQL> select NEW_TIME('08/12/04', 'GMT', 'PDT') from DUAL;
SQL> select hiredate, NEW_TIME(hiredate, 'GMT', 'PDT') from EMP;
<5> MONTHS_BETWEEN(날짜컬럼or날짜데이터1, 날짜컬럼or날짜데이터2)
SQL> select MONTHS_BETWEEN('80/01/02', '81/02/04') from DUAL;
-- empno가 7782인 사원의 현재까지의 근무월수
SQL> select MONTHS_BETWEEN(SYSDATE, HIREDATE) from EMP where EMPNO=7782;
<6> NEXT_DAY(날짜컬럼or날짜데이터, 숫자)
SQL> select SYSDATE, NEXT_DAY(SYSDATE,4) from DUAL;
SQL> select SYSDATE, NEXT_DAY(SYSDATE,2) from DUAL;
-- 일(1) 월(2) 화(3) 수(4) 목(5) 금(6) 토(7)
4) 문자 변환 함수 ( ***** )
=> TO_CHAR(날짜컬럼or날짜데이터, '변환포멧')
<1> 'D'
SQL> select SYSDATE, to_char(SYSDATE, 'D') from dual;
<2> 'DAY'
SQL> select SYSDATE, to_char(SYSDATE, 'DAY') from dual;
<3> 'DY'
SQL> select SYSDATE, to_char(SYSDATE, 'DY') from dual;
<4> 'DD'
SQL> select SYSDATE, to_char(SYSDATE, 'DD') from dual;
<5> 'MM'
SQL> select SYSDATE, to_char(SYSDATE, 'MM') from dual;
<6> 'MONTH'
SQL> select SYSDATE, to_char(SYSDATE, 'MONTH') from dual;
<7> 'YY'
SQL> select SYSDATE, to_char(SYSDATE, 'YY') from dual;
<8> 'YYYY'
SQL> select SYSDATE, to_char(SYSDATE, 'YYYY') from dual;
<9> 'MM-DD-YY'
SQL> select SYSDATE, to_char(SYSDATE, 'MM-DD-YY') from dual;
<10> 'HH' or 'HH12'
SQL> select SYSDATE, to_char(SYSDATE, 'HH') from dual;
<11> 'HH24'
SQL> select SYSDATE, to_char(SYSDATE, 'HH24') from dual;
<12> 'MI'
SQL> select TO_CHAR(SYSDATE, 'MI') from DUAL;
<13> 'SS'
SQL> select TO_CHAR(SYSDATE, 'SS') from DUAL;
<14> 'AM'or'PM'
SQL> select TO_CHAR(SYSDATE, 'AM HH:MI:SS') from DUAL;
SQL> select TO_CHAR(SYSDATE, 'fmAM HH:MI:SS') from DUAL;
--현재날짜를 '2020-12-07 오후 12:13:50 월요일' 식으로 출력
<15> 'YYYY-MM-DD AM HH:MI:SS DAY'
SQL> select TO_CHAR(SYSDATE, 'YYYY-MM-DD AM HH:MI:SS DAY') from DUAL;
cf) alter session set NLS_LANGUAGE='ENGLISH';
cf) Tip
- one, two, three ..
SQL> select to_char(SYSDATE, 'DDSP') from dual;
- simple 서수
SQL> select to_char(SYSDATE, 'DDTH') from dual;
- 서수
SQL> select to_char(SYSDATE, 'DDSPTH') from dual;
(5) 복수행 함수 ( ***** )
1) count(컬럼명)
SQL> select count(ename) from emp;
SQL> select count(comm) from emp;
SQL> select count(*) from emp;
SQL> select count(EMPNO) from emp;
2) sum(컬럼명)
SQL> select sum(comm) from emp;
SQL> select sum(sal) from emp;
3) avg(컬럼명)
SQL> select avg(sal) from EMP;
SQL> select avg(comm) from EMP; -- null제외
SQL> select avg(nvl(comm,0)) from EMP; -- null포함
4) max(컬럼명)와 min(컬럼명)
SQL> select max(sal) from EMP;
SQL> select min(sal) from EMP;
SQL> select max(sal) - min(sal) from EMP;
-- 최고 급여자의 사원이름을 출력
SQL> select ENAME, SAL from EMP where SAL=max(SAL); --(X)
SQL> select ENAME, SAL from EMP where SAL=(select max(SAL) from EMP); --(O)
5) VARIANCE(컬럼명)
SQL> select VARIANCE(comm) from EMP;
6) STDDEV(컬럼명)
SQL> select STDDEV(comm) from EMP;
< Question >
-- 부서별 평균연봉(반올림)을 출력
Err> select DEPTNO, avg(SAL) from EMP;
SQL> select DEPTNO, avg(SAL) from EMP group by DEPTNO;
SQL> select DEPTNO, round(avg(SAL)) from EMP group by DEPTNO;
-- 급여 2000 이상인 사원들의 부서별 평균급여의 반올림값
SQL> select DEPTNO, round(avg(SAL)) from EMP
where SAL>=2000 group by DEPTNO;
-- 급여 2000 이상인 사원들의 부서별 평균급여의 반올림값 (부서번호의 오름차순 정렬)
알게된 개념
cmd
창에ping 도메인주소
하면 해당 ip를 알아올 수 있다.- 복수행 함수에는
where
조건문을 쓸 수가 없다.
Author And Source
이 문제에 관하여(2020.12.07 일지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@peachy/study-036저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)