SQL group by (문제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 --부서별 연도별 01~03 04~06 / 07~나머지년도 인원을 계산하세요. -- -연도(column) --부서(row) select department_id, count(*), count(decode(to_char(hire_date,'yyyy'), 2001, 1, 2002, 1, 2003, 1)) as "1~3", count(decode(to_char(hire_date,'yyyy'), 2004, 1, 2005, 1, 2006, 1)) as "4~6", count(decode(to_char(hire_date,'yyyy'), 2007,..
2019. 11. 18.
SQL sum avg count max min
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 --합계, 평균, row의 개수 select sum(sal), avg(sal), count(sal), count(*) from emp; --comm합계, row의 갯수, comm의 갯수(null값이 있어서 4로 출력) select sum(comm), count(*), count(comm) from emp; --데이터 있는 것만 count select comm, count(comm) from emp; --2200 / 4 = 550 //null값은 빼고 계산된다. --sum(comm)/count(comm); select avg(comm) from emp; --..
2019. 11. 18.
SQL DECODE
--decode(식, 조건, 결과, 조건, 결과, 조건, 결과) select empno, ename, decode (deptno, 10, '영업', 20, '기획', 30,'개발') as result from emp; --decode(식, 조건,결과,조건,결과,기본값) select empno, ename, decode (deptno, 10, '영업','개발') as result from emp; --Q.10번부서의 급여는 10%인상, 20번부서는 20%인상, -- 나머지 부서는 동결 select empno, ename, sal, deptno, decode( deptno, 10, sal*1.1, 20, sal*1.2, sal) as salup from emp; --Q.각 직업별 급여 인상 select em..
2019. 11. 15.
SQL NVL NVL2
--null을 aaa로 채우기 select nvl(null, 'aaa') from dual; --null값이 없으므로 test출력 select nvl('test','aaa') from dual; --null값을 1000으로 대체 select empno, ename, comm, nvl(comm,1000) from emp; select ename, sal, comm, sal*12+comm from emp; -- null값을 0으로. select ename, sal, comm, sal*12+nvl(comm,0) from emp; --null값에 문자 데이터 넣기 select ename, sal, comm, nvl(to_char(comm), 'no data') as result from emp; col resu..
2019. 11. 15.
SQL INSTR
SELECT instr('abcdabcdabcd', 'a') from dual; SELECT instr('abcdabcdabcd', 'c') from dual; -- SELECT instr('abcdabcdabcd', 'c', 5) from dual; select instr('abcdabcdabcdabcd','a',5,2) from dual; --5번째자리부터 2번째에 만나는? select instr('abcdabcdabcdabcd','a',5,4) from dual; -- --emp 테이블의 ename에서 'S'가 포함된 사원의 --사원번호, 이름,부서코드, 입사일을 출력하시오 --(1) select empno, ename, deptno, hiredate from emp where ename like ..
2019. 11. 15.
SQL LPAD RPAD
@ LPAD 왼쪽을 채워준다 SQL> select lpad('abc', 5, '*'), lpad('hong', 10, '#') 2 from dual; @ LPAD 공백으로 채울 수 있다. SQL> select lpad('abc', 10) ||'123' 2 from dual; @ LPAD 기호뿐 아니라 숫자, 2글자 이상 글자도 삽입 가능 SQL> select rpad('abc', 10, 's2') 2 from dual; @ RPAD 문자 오른쪽을 공백으로 채우기 SQL> select rpad('a', 10) ||'abc' 2 from dual; @ 급여 500당 * 출력하기 SQL> select empno, ename, sal, lpad('*', trunc(sal/500), '*') as result 2..
2019. 11. 15.
SQL 숫자 표현 (to char)
SQL> select ename, sal, to_char(100000000.2345, '9,999,999') 2 from emp; SQL> select ename, sal, to_char(0.123, '9,999,999.99') 2 from emp; // .12로 출력 SQL> select ename, sal, to_char(0.123, '9,999,990.99') 2 from emp; // 0.12로 표현
2019. 11. 14.