[조건식,그룹 함수]

Oracle/OracleDB_SQL 2016. 5. 18. 21:20


SELECT
FROM
WHERE - 행에 대한 제한
GROUP BY
HAVING
ORDER BY

AVG
- null값 무시한다.
MIN
MAX
SUM

COUNT
- 테이블의 행 수를 반환한다.
- COUNT(expr에 대해서 null이 아닌 값을 가진 행의 수를 반환한다.)

세 가지 형식이 있다.
COUNT(*) 중복행포함한다., 열에 null값 포함한 행이 포함, where절이 포함되어 있으면
                                    where조건을 충족하는 행수를 반환한다.
COUNT(expr)
COUNT(DISTINCT expr)
- 중복값 세지 않으려면 DISTINCT 키워드 사용한다.

select AVG(commission_pct) from employees;
- 그룹함수는 열에 잇는 null값을 무시하기때문에
- 4명의 commission_pct값의 평균을 구하게된다.

select AVG(NVL(commission_pct, 0)) from employees;
- NVL함수는 강제로 그룹함수에 null값이 포함되도록 하기때문에
- 전체의 평균을 구하게 된다.

-------------------------------------------------------------------
데이터 그룹생성 : Group by 절 구문


그룹함수썻지만 일반 칼럼명은 쓰지않으면 에러는 나지않는다.
select절에 그룹함수를 쓰고 일반 칼럼을 쓰면 에러가 난다.
 ORA-00937: not a single-group group function
그룹함수를 쓰고 일반 칼럼을 여러개 쓰게되면
GROUP BY절에 모두 포함이 되어야한다.

** group by 열은 select 리스트에 없어도 된다.
** order by절에도 그룹함수를 사용할 수 있다.

여러 열에서 GROUP BY 절 사용
**


동일한 직무를 수행하는 사람 수를 표시하는 쿼리 작성

 

콘솔 상에서 페이지, 라인, 칼럼 설정하기
set page 30 -> 페이지 수 늘리기
set lines 20
col [칼럼명] for a15 -> 칼럼을 숫자만큼 셋팅

 

 

 

 

 

[연습문제]

 

6. 

select count(employee_id) total,
    sum(decode(to_char(hire_date, 'YYYY'), '1995',1,null)) "1995",
    sum(decode(to_char(hire_date, 'YYYY'), '1996',1,null)) "1996",
    sum(decode(to_char(hire_date, 'YYYY'), '1997',1,null)) "1997",
    sum(decode(to_char(hire_date, 'YYYY'), '1998',1,null)) "1998"
    from employees;

 

7.

select job_id,

sum(decode(departmnet_id, 20, salary, null ) ) "Dept 20",

sum(decode(departmnet_id, 50, salary, null ) ) "Dept 50",

sum(decode(departmnet_id, 80, salary, null ) ) "Dept 80",

sum(decode(departmnet_id, 90, salary, null ) ) "Dept 90",

sum(salary) total

group by job_id;

 

 

 

 

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

단일 행 함수  (0) 2016.05.21
데이터 제한 및 정렬  (0) 2016.05.21
변환 함수 및 조건부 표현식  (0) 2016.05.18
SQL 함수  (0) 2016.05.16
윈도우에서 오라클 경로 찾기  (0) 2016.05.12
admin