1. SUM, AVG, MAX, MIN, COUNT 그룹함수 사용 WHERE, GROUP BY, HAVING 사용



1
2
3
4
5
6
7
8
9
10
11
SELECT DEPTNO
     , SUM(SAL)
     , AVG(SAL)
     , MAX(SAL)
     , MIN(SAL)
     , COUNT(SAL)
  FROM EMP
 WHERE JOB='MANAGER'
 GROUP BY DEPTNO
 HAVING DEPTNO >= 10
 ORDER BY DEPTNO
cs

출력 결과




2. ROUND 반올림, TRUNC 값짜름



1
2
3
4
5
6
7
8
9
-- ROUND 반올림, TRUNC 짜른값  
SELECT ROUND(45.62,0-- 45
     , ROUND(45.62,1-- 45.6
     , ROUND(45.62,2-- 45.62
     , ROUND(45.62,-1-- 50
     , TRUNC(45.62,0-- 45
     , TRUNC(45.62,1-- 45.6
     , TRUNC(45.62,2-- 45.2
  FROM DUAL
cs


출력 결과



3. 다중행 서브 쿼리( IN / ALL / ANY / SOME / EXISTS )



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--IN : 메인 쿼리의 비교 조건이 서브쿼리의 결과중에서 하나라도 일치하면 참, ‘=‘비교만 가능
SELECT *
  FROM EMP
 WHERE SAL IN(8001600-- 
;
 
-- ALL : 메인 쿼리의 비교 조건이 서브쿼리의 결과중에서 모든값이 일치하면 참,
SELECT *
  FROM EMP
 WHERE SAL < ALL(20002500-- WHERE SAL < 2000 AND SAL < 2500
;
 
--ANY, SOME : 메인 쿼리의 비교 조건이 서브쿼리의 결과중에서 하나라도 일치하면 참, ‘=‘비교만 가능
SELECT *
  FROM EMP
 WHERE SAL < ANY(20002500-- WHERE SAL < 2000 OR SAL < 2500
;
  
SELECT *
  FROM EMP
 WHERE SAL < SOME(20002500-- WHERE SAL < 2000 OR SAL < 2500
;
cs


IN, EXISTS


값이 안에 존재할때 IN

값이 안에 존재할때 EXSITS


두 표현을 사용할 수 있다.


아래 식은 같은 결과 값을


IN과 EXISTS를 각각 따로 사용해 작성한 쿼리이다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 --IN
SELECT *
  FROM EMP
 WHERE DEPTNO IN(10,20)
;
 
 --EXISTS
SELECT *
  FROM EMP
 WHERE EXISTS
       (
        SELECT DEPTNO
          FROM DEPT
         WHERE DEPTNO IN(10,20)
       )
;
cs


+ Recent posts