본문 바로가기

나 취준생/SQL

(54)
SQL - 데이터 분석 함수 2 1. 데이터를 누적해서 합계하는 데이터 분석 함수 ( SUM_OVER ) SUM( 컬럼명 ) OVER ( order by 컬럼명 desc or asc ) 예제: 사원번호, 이름, 월급, 월급의 누적치를 출력하기 select empno, ename, sal, sum(sal) over ( order by empno asc) 누적치 from emp; 맨 오른쪽에 누적치가 점점 쌓이는 것을 확인. over가 보이면 감이 올 것이다.물론 다른 함수들과 마찬가지로 partition by를 사용할 수 있다. 예제: 직업, 월급, 직업별 총합 누적치를 출력하기 select job, ename, sal, sum(sal) over ( partition by job order by ename ) 누적치 from emp; 2..
SQL - 컬럼을 ROW로 출력하기 1. COLUMN을 ROW로 출력하는 방법 1 ( SUM + DECODE ) 일단 먼저, emp 테이블의 부서번호 (deptno) 별로 월급의 총합을 확인하고 싶다고 가정하자. select deptno, sum(sal) from emp group by deptno order by deptno; 이것을 가로로 출력해야하면 어떻게 할까? 이전에 배운 DECODE 함수를 활용해야 한다. DECODE ( 컬럼명, 조건1, 출력 1, 조건2, 출력 2, 그 외 출력 3 ) 으로 실행되는데, 예제로 select decode( deptno, 10, sal , 0 ) from emp; 를 실행해보자 이렇게하면 부서 번호가 10인 경우만 sal(월급) 이 출력되고 나머지 20, 30 같은 경우는 0이 출력된 것을 볼 수..
SQL - listagg, lag, lead 1. 데이터를 가로로 출력하는 함수 ( LISTAGG ) 지금까지는 데이터를 세로로 출력했지만사실 다른 사람에게 많은 데이터를 보여줘야 할 경우에가로로 출력하는 경우가 더 보기 나을 수 있다. 그럴 때 사용하는 함수가 LISTAGG 기본 문법은 LISTAGG( 컬럼명, 컬럼 사이에 넣을 구분자 ) within group ( order by 컬럼명 asc or desc ) 이다. 일단 emp 테이블의 deptno에 따른 사원들을 확인해보자 select deptno, ename from emp order by deptno;이렇게 하면 확인할 수 있는데, 한 번에 보기가 힘들다. 데이터 양이 더 많다면, 커서를 내려야해서 보기 좋지 않을 것 같다. 이제 listagg를 써보자. select deptno, li..
SQL - 데이터 분석 함수 1 데이터 분석 함수 : 데이터 분석을 용이하게 하기 위해서 제공하는 함수 1. 순위를 출력하는 함수 1( RANK ) 예제: 이름, 월급, 월급에 대한 순위를 출력하기 select ename, sal, rank() over ( order by sal desc) as 순위 from emp; 예제 : 직업, 이름, 월급, 순위를 출력하는데 [[직업별로]] 각각 월급이 높은 순서대로 순위를 출력하기 select job, ename, sal, rank() over ( order by sal desc ) as 순위 from emp group by job; -- GROUP BY 표현식이 아닙니다 ㅠ rank 함수에는 group by 말고 partition by 를 사용해야 한다. select job, ename, s..
SQL - 복수행 함수 * 복수행 함수 1. 데이터의 개수를 세는 집계 함수 (count) 예제 : 사원 테이블에 들어있는 사원이 몇 명인지 출력하기select count(*) from emp; 15명의 사원이 들어있는 emp 테이블이기 때문에 15가 출력되었다. 2. 수치 데이터 칼럼의 합계를 출력하는 함수 (SUM) 예제 : 직업이 SALESMAN인 사원의 월급의 총합을 출력하기select sum(sal) from emp where job='SALESMAN';3. 수치 데이터 컬럼의 평균을 출력하는 함수 (AVG) select avg(comm) select avg(nvl(comm,0)) from emp; from emp; nvl로 comm을 덮었지만 사실 nvl은 null 값을 0으로 바꾸기 때문에 값에 영향을 줄 수 없을..
SQL - nvl 함수 + SQL의 IF문 구현하기 null 값 대신에 다른 값을 출력하고 싶을 때 사용하는 함수( nvl 함수) nvl( 컬럼명, null 대신 출력할 값 ) select ename, comm select ename, nvl(to_char(comm),'no comm') from emp; from emp;-- emp 테이블의 사원과 커미션을 확인 if 문을 SQL로 구현할 때 사용하는 함수 1 (decode 함수) if 문 : 만약에 무슨일이 벌어지면 어떻게 행동하라고 컴퓨터 프로그래밍을 하는것 decode( 컬럼명, 조건1, 출력1, 조건2, 출력2, [그 밖의 경우] 출력 3 ) 예제 : 부서번호가 10이면 5600을 출력하고 20이면 4500을 출력하고 나머지 부서번호는 0을 출력하기select ename, sal, deptno, d..
SQL - 단일 변환 함수 문자형으로 데이터 유형 변환하기 ( TO_CHAR ) 숫자형 -->> 문자형으로 변환,날짜형 -->> 문자형으로 변환할 때 사용하는 함수 예제 : 오늘이 무슨 요일인지 출력select sysdate from dual; select to_char(sysdate, 'day') from dual; * 날짜형식년도 : RRRR, YYYY, RR, YY월 : MM, MON일 : DD시간 : HH, HH24분 : MI초 : SS요일 : day, dy, d 예제 : 11월에 입사한 사원들 출력하기select ename, hiredate from emp where to_char(hiredate,'MM')='11'; 문자열을 날짜로 형 변환하는 함수 (to_date) 예제 :select to_date ('18700710..
SQL - 단일 함수 2 숫자 함수 1. round : 반올림하는 함수 2. trunc : 잘라내서 버리는 함수 3. mod : 나눈 나머지 값을 출력하는 함수 반올림해서 출력하기(ROUND) 예제: select round( 786.567, -1 ), round( 786.567 ), round( 786.567, 1 ) from dual; ** dual 은 이렇게 임시로 값을 확인하고 싶을 때 사용하기 편한 임시 테이블이다. round( 숫자, n ) --> n번째 자리까지 반올림하여 반환 7 8 6 . 5 6 7 -3 -2 -1 0 1 2 3 숫자를 버리고 출력하기(TRUNC) 예제 : select trunc( 786.567, -1 ), trunc( 786.567 ), trunc( 786.567, 1 ) from dual; 나눈..