[조건식,그룹 함수]
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 |