728x90
반응형

GROUP BY 절 특징

 

  • GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT절에 집계함수를 사용.
  • 집계함수의 통계정보는 NULL 값을 가진 행을 제외하고 수행한다.
  • GROUP BY 절에서는 ALIAS 명을 사용할 수 없다.
  • 집계함수는 WHERE 절에 올 수 없다.
  • 집계함수를 사용할 수 있는 GROUP BY 절보다 WHERE 이 먼저 수행된다.
  • WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
  • HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시 할 수있다.
  • GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중HAVING 에서 제한 조건을 두어 조건을 만족하는 내용만 출력.

HAVING 절 특징

 

  • HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있다
  • HAVING 절과 GROUP 절의 순서를 바꾸어서 수행하더라도 문법 에러는 없다. 하지만 논리적으로 순서를 지키는 것을 권고
  • HAVING 절은 SELECT 절에서 사용되지 않은 칼럼이나 집계함수가 아니더라도 소그룹 집계함수를 이용한 조건을 표시을 가능

 


 

데이터의 효율적인 자원 활용 (WHERE 절과 HAVING 절의 관계)

 

  • GROUP BY 연산 전 WHERE 절에서 조건을 적용하여 필요한 데이터만 추출하여 GROUP BY 연산하는 방법
  • GROUP BY 연산 후 HAVING 절에서 필요한 데이터만 필터링하는 방법
  • 위의 두 가지 방법 중 WHERE 절에서 조건절을 적용하여 GROUP BY의 계산 대상을 줄이는 것이 효율적인 자원 사용이다

 


SELECT 문장 실행 순서

 

  1. 발췌대상 테이블을 참조한다 (FROM)
  2. 발췌대상 데이터가 아닌 것은 제거한다. (WHERE)
  3. 행들을 소그룹화 한다 (GROUP BY)
  4. 그룹핑된 값의 조건에 맞는 것만을 출력한다 (HAVING)
  5. 데이터 값을 출력/계산한다 (SELECT)
  6. 데이터를 정렬한다 (ORDER BY)

 

728x90
반응형
728x90
반응형

 

  • 집계함수

- COUNT(표현식) : 표현식의 NULL 값인 것을 제외한 행의 수를 출력한다

 

- COUNT(*) : NULL값을 포함한 행의 수를 출력한다

 

– SUM(DISTINCT | ALL) : 표현식의 NULL 값인 것을 제외한 합계

 

– AVG(DISTINCT | ALL) : 표현식의 NULL 값인 것을 제외한 평균값

 

– MAX(DISTINCT | ALL | 표현식) : 최대값

 

– MIN(DISTINCT | ALL | 표현식) : 최소값

 

– STDDEV(DISTINCT | ALL) : 표준편차

 

– VARIANCE(DISTINCT | ALL) : 분산

 

 

728x90
반응형

'IT_Web > Oracle' 카테고리의 다른 글

Oracle 서브쿼리(Subquery) 의 개념  (0) 2020.02.26
Oracle GROUP BY & HAVING 절 특징  (0) 2020.02.26
Oracle 공집합에대한 NVL 함수 사용법  (0) 2020.02.25
Oracle 조건 & Null함수 문법  (0) 2020.02.25
Oracle 숫자함수 문법  (0) 2020.02.25
728x90
반응형
  • 공집합이란 NULL과는 다르게 조건에 맞는 데이터가 단한건도 없는 경우를 말한다
  • 일반적으로 NULL과는 다른 데이터 값이다 

공집합은 어떠한 특정 테이블에 존재하지 않는 컬럼의 데이터 값을 출력할 때 발생한다

 

SELECT EMPNO FROM EMP WHERE ENAME ='KIM';

 

위의 쿼리문으로 공집합이 발생한다면 여기서 NVL 함수를 써도 결과는 변하지 않는다.

NVL 함수는 NULL 값을 변경할수 있는 함수이며, 데이터가 없는 공집합은 대상이 되지 않는다

 

그래서 다른 방법을 생각해야한다

집계함수는 결과가 공집합인 경우에도 NULL을 출력할 수 있다

그러므로 먼저 집계함수를 사용하여 NULL값으로 만든 다음 NVL함수를 사용해서 원하는 형태로 출력한다

 

SELECT NVL(MAX(EMPNO), '1111') EMPNO FROM EMP WHERE ENAME='KIM'

 

출력값 : 1111

 

 

 

728x90
반응형
728x90
반응형
  • 조건함수

• DECODE (칼럼 또는 수식, 조건1, 값1, 조건2, 값2, 조건3, 값3,…….., 디폴트 값)

–IF –THEN –ELSE 문장과 같은 처리

–칼럼 또는 수식의 값이 조건1에 해당하면 값1을 리턴하고, 조건2에 해당하면 값2를 리턴한다.

–조건에 맞는 값이 없으면 디폴트 값을 리턴한다.

 

  • NULL 함수

 NVL함수

– NVL( expr1, expr2 ) expr1 : NULL 값을 포함하는 값이나 표현식, expr2 : NULL 대신 사용할 값

# SELECT first_name, titile, salary * NVL(commission_pct,0)/100 COMM from s_emp;

 

- NULLIF( expr1, expr2 ) expr1 : 어떤 표현식에 해당하는 범주 expr2: expr1의 표현식과 같은 값을 비교할 표현식

#SELECT ENAME, EMPNO, MGR, NULLIF(MGR,7698) FROM EMP

#SELECT ENAME, EMPNO, MGR,

                      CASE MGR WHEN 7698

                                             THEN NULL

                                             ELSE MGR

                                             END AS MGR2 FROM EMP;

728x90
반응형
728x90
반응형
  • 숫자함수

• ROUND (칼럼명or 숫자값, n) : 숫자값을소수점 n의 위치까지 반올림한다

. – ROUND(45.925, 2)=>45.93

 

• TRUNC (칼럼명or 숫자값, n) : 숫자값을소수점 n의 위치 아래까지 잘라낸다.

– TRUNC(45.925, 2)=>45.92

 

• FLOOR (칼럼명or 숫자값) : 숫자값보다 같거나 작은 최대의 정수를 리턴한다.

– FLOOR(45.925)=>45

 

• CEIL (칼럼명or 숫자값) : 숫자값보다 같거나 큰 최소의 정수를 리턴한다.

– CEIL(45.925)=>46

 

• MOD (칼럼명or 숫자값, 칼럼명or 숫자값) : 첫 번째 인수를 두 번째 인수로 나눈 나머지를 리턴한다.

– MOD(45, 2)=>1

 

• TO_CHAR (날짜 값, 형식) : 날짜 값을 형식에 맞춰 문자 스트링으로만들어 준다.

 

• TO_CHAR (숫자 값, 형식) : 숫자 값을 문자 스트링으로만들어 준다.

 

• TO_NUMBER (문자 스트링, 형식) : 문자 스트링을주어진 형식대로 해석하여 숫자 값으로 만들어 준다.

 

 

 

 

728x90
반응형
728x90
반응형

문자함수

LOWER (칼럼명or 스트링) : 알파벳 문자를 소문자로 바꿔준다.

–LOWER(‘Oracle DBMS’)=>oracle dbms

 

UPPER (칼럼명or 스트링) : 알파벳 문자를 대문자로 바꿔준다.

–UPPER(‘Oracle DBMS’)=>ORACLE DBMS

INITCAP (칼럼명or 스트링) : 알파벳 단어의 첫 글자는 대문자로, 나머지는 소문자로 바꿔준다.

 

SUBSTR (칼럼명or 스트링, m, n) : m의 위치에서 n 길이만큼 문자열을 잘라 리턴한다.

- SUBSTR(‘Oracle DBMS’, 2,4)=>racl

 

LENGTH (칼럼명or 스트링) : 문자열의 길이를 리턴한다.

– LENGTH(‘Oracle DBMS’)=>11

 

INSTR (칼럼명or 스트링, 문자) : 문자열 내에서 문자의 위치 값을 리턴한다.

– INSTR(‘Oracle DBMS’, ‘a’)=>3

 

LPAD (칼럼명or 스트링, m, 문자) : 문자열 전체 길이가 m이 되도록 문자열의 왼쪽에 문자를 채워준다.

– LPAD(‘Oracle DBMS’, 13, ‘x’)=>xxOracleDBMS

 

RPAD (칼럼명or 스트링, m, 문자) : 문자열 전체 길이가 m이 되도록 문자열의 오른쪽에 문자를 채워준다.

– RPAD(‘Oracle DBMS’, 13, ‘x’)=>Oracle DBMSxx

 

TO_CHAR (날짜 값, 형식)

- 날짜 값을 형식에 맞춰 문자 스트링으로만들어 준다.

 

TO_CHAR (숫자 값, 형식)

- 숫자 값을 문자 스트링으로만들어 준다.

 

TO_DATE (문자 스트링, 형식)

- 문자 스트링을주어진 형식대로 해석하여 날짜 값으로 만들어 준다.

 

TO_NUMBER (문자 스트링, 형식)

- 문자 스트링을주어진 형식대로 해석하여 숫자 값으로 만들어 준다.

 

728x90
반응형

'IT_Web > Oracle' 카테고리의 다른 글

Oracle GROUP BY & HAVING 절 특징  (0) 2020.02.26
Oracle 집계함수 문법  (0) 2020.02.26
Oracle 공집합에대한 NVL 함수 사용법  (0) 2020.02.25
Oracle 조건 & Null함수 문법  (0) 2020.02.25
Oracle 숫자함수 문법  (0) 2020.02.25

+ Recent posts

Powered by Tistory, Designed by wallel