본문 바로가기

전체 글

(228)
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; 나눈..
SQL - 단일 함수 1 대소문자 변환 함수 (UPPER, LOWER, INITCAP) upper: 대문자로 출력하는 함수lower : 소문자로 출력하는 함수initcap: 첫번째 철자는 대문자로 출력하고 나머지는 다 소문자로 출력하는 함수 select upper(ename), lower(ename), initcap(ename) from emp;문자에서 특정 철자를 추출하는 함수(SUBSTR) 예 : SUBSTR( 컬럼명 , 2 , 5 ) --> 컬럼명에 들어있는 값의 2번째 자리 기준으로 5개의 문자를 추출하여 반환.만약 'BIG DATA'라는 값이 들어있었다면 --> 'IG DA' 를 반환 substr를 활용한 검색예제 : 성씨가 이씨, 유씨, 김씨 인 학생들의 이름을 출력하시오!select ename from emp12 w..
SQL - 논리 연산자 논리 연산자 : and, or, not * True and True 면 True 여서 결과가 출력이 된다. False and True 면 False 여서 결과가 출력이 안 된다 False or True 는 True 이므로 결과가 출력이 된다. 예제 : 직업이 SALESMAN 이고 월급이 1400 이상인 사원만 출력select ename, sal, job from emp where job ='SALESMAN' and sal >= 1400; 예제 : 직업이 SALESMAN 이거나 월급이 1400 이상인 사원 출력select ename, sal, job from emp where job ='SALESMAN' or sal >= 1400; 예제 : 이메일의 도메인이 naver나 gmail이 아닌 학생 출력 sel..