emp 테이블의 / ename = FORD의 값과 dept 테이블의 / deptno = 20의 값 두 개의 표를 하나로 합치는 것이 조인임. select ename,deptno from emp where ename = 'FORD'; NON-EQUL JOIN은 범위를 지정할 때 사용하는 것. select empno,ename,sal,grade --non join from emp,salgrade where salgrade.losal
-HAVING 절 HAVING절은 GROUP BY 절에 의해 생성된 그룹을 대상으로 특정 조건에 맞는 그룹을 선택할 때 사용 이 조건만 알면 HAVING절은 매우 간단하다 where와 차이점은 , GROUP BY전이냐 후냐 그리고 HAVING절에는 그룹 함수만 들어갈 수 있고 WHERE에는 그룹함수 ㄷ들어갈 수 없다 =예제= 부서별로 평균 임금이 2000이 넘는 부서만 출력 select deptno,avg(sal) from emp group by deptno having avg(sal) >= 2000; =실습= 1000이상의 급여를 가지고 있는 사람들에 대해서만 부서별로 평균을 구한 후 구해진 부서별 평균 급여가 2000이상인 부서 번호와 부서별 평균 급여를 출력 1000이상의 급여는 일반컬럼에 대한 조..
-GROUP BY 절 기본형식 : SELECT 컬럼명,별칭,* FROM 테이블명 WHERE 조건(연산자) GROUP BY 컬럼명 =예제= 부서별 최고 금액과 최저 금액을 출력 select deptno,max(sal),min(sal) from emp group by detpno; ==문제 접근== 쉽게 설명하면 group by를 사용해서 deptno를 그룹화 시킨 다음 , deptno(부서별)에 대한 최소 급여랑 최대 급여를 출력하는 거임. 그냥 쉽게, 월급에 최대를 알고 싶은데 어떤 그룹에 최대를 알고 싶냐고 하면 GROUP BY를 사용하면 됨. ==예제== 부서별로 급여가 1000이상인 사람들의 평균을 구하여라 select avg(sal),deptno from emp where sal>=1000 gro..
==그룹 함수 실습== --컬럼명 : total , 1980 , 1981 , 1982 12 1 10 1 , 이렇게 출력될 수 있도록 만들기. select count(*) as "TOTAL", count(decode(substr(hiredate,1,4),1980,1)) as "1980", sum(decode(substr(hiredate,1,4),1981,1,0)) as "1981", sum(decode(to_char(hiredate,'yyyy'),1982,1,0)) as "1982" from emp; ==문제 접근== 1)decode 함수를 이용해서 , substr(hiredate,1,4)값이 1980이라면 , 1을 출력하게 만들고 그 갯수를 센다. 2)decode 함수를 이용해서 , substr(hire..
select절에는 일반컬럼과 그룹컬럼이 같이 쓰일 수 없다. ex) sum에 대한 정보는 1개인데 나머지 12개의 정보를 출력해서 매치하는 것이 불가능 하기 때문이다. -그룹 함수 COUNT : 행의 개수를 카운트한다. select count(*) from emp; NULL을 빼고 계산한다. select count(comm) from emp; ==예제== 직무의 종류가 몇 종류인지 출력 select count(distinct(job)) from emp; ==예제== 30번 부서에 근무하고있는 사원의 수 select count(*) from emp where deptno = 30; SUM : 해당 열의 총 행의 합계를 구한다. select sum(sal) from emp AVG : 해당 열의 총 행의 평균..
NVL함수의 개념은 되게 간단하다 NULL값은 계산이 안 되기 때문에 NULL인 경우에는 그 안에 대체숫자 or 문자열을 넣는 함수이다 select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp; ==예제== null 값이면 문자열을 넣으려면 어떻게 해야 될까? mgr의 값은 NUMBER인데 어떻게 문자로 대체할 수 있을까? !!!MGR자체를 to_char로 형 변환을 시키면 된다.!!! select empno,ename,nvl(to_char(mgr),'CEO') from emp; decode함수는 그 값이 10,20등등이면 내가 원하는 값을 추가하는 거임 select empno,ename,deptno,decode(deptno,10,'ACCOUNTIN..