Goals
- 그룹 함수 : AVG, COUNT, MAX, MINN, STDDEV, SUM, VARIANCE, ORDER BY, GROUP BY, HAVING
- Sub Query, 다중행 Sub Query, 다중 컬럼 Sub Query
- ANY, ALL, IN
Notes
다중행 함수(multi-row function, group function)
여러개의 행이 함수로 argument로 전달돼서 하나의 결과값이 출력되는 함수
AVG : 데이터의 평균
COUNT : 데이터의 갯수를 리턴 : Null 이 아닌 값이 몇 개가 있는지 알아낼 때 유용하게 사용
MAX : 데이터의 최고값
MIN : 데이터의 최소값
STDDEV : 데이터의 표준편차
SUM : 데이터의 총합
VARIANCE : 데이터의 분산
> count(distinct deptno) from emp; 중복되지 않는 값들의 갯수를 리턴한다.
> select empno, count(empno) from emp; -- 행의 개수가 다르기 때문에 에러가 발생.
>(주의) 여러 행이 결과로 출력되는 변수와 그룹함수는 함께 select 할 수 없다.
> Max(), Min() 함수는 Date 타입에도 사용할 수 있다.
> select max(hiredate), min(hiredate) from emp; -- 옛날이 더 적은 것, 미래가 더 큰 것.
ORDER BY
select column from table ORDER BY 칼럼 asc/desc ;
디폴트 값이 오름차순(asc) 생략 가능.
SELECT * FROM emp order by ename;
select * from emp order by deptno asc, empno desc; -- 먼저 나오는 컬럼 기준으로 정렬 후, 두 번째 기준으로 다시 정렬
GROUP BY
그룹 함수를 사용할 때 GROUP BY
HAVING
<순서 기억>
SELECT
FROM
WHERE : SELECT에 대한 조건
GROUP BY 그루핑할 컬럼명
HAVING : GROUP BY에 대한 조건
ORDER BY ~~~가장 마지막에!
※ 모든 그룹 함수들은 NULL 을 제외하고 연산한다.
> NULL을 0으로 대체한 뒤에 연산하자
SELECT SUM(comm), AVG(comm), AVG(NVL(comm, 0)) from emp;
> Group by에서 사용되지 않은 변수(컬럼)은 select할 수 없음
※ SELECT에서 만든 컬럼의 별명(alias)는 HAVING절에서는 사용할 수 없음.
- Sub Query :
-- SELECT 문장 안에 새로운 SELECT 문장이 있는 것.
-- 단행 Sub Query : Sub Query의 한 컬럼의 값을 비교, SubQuery에서 단일 컬럼을 리턴
select empno, ename
from emp
where empno = (select mgr from emp
where empno = 7369);
- 다중행 Sub Query : ALL (AND), ANY (OR과 유사)
-- Sub Query의 여러 값과 비교
-- Sub Query가 여러 컬럼을 리턴한다.
select ENAME, JOB, SAL from emp
where sal < ANY ( select sal from emp
where job = 'ANALYST');
- 다중 컬럼 Sub Query
--서브쿼리에 Select 대상을 2개 이상 반환한다.
select * from emp
where (deptno, sal) in (
select deptno, min(sal) from emp group by deptno
);
-- (deptno, sal)과 (deptno, min(sal)) 의 쌍이 일치해야 한다.
ANY : 여기있는 값들 가운데 하나
ALL : 여기있는 값들 모두와
IN : ANY + =
(ALL, ANY는 부등호 비교 가능)
'DB > Oracle' 카테고리의 다른 글
Oracle DB7_DDL, DML, 제약조건, EXCEL문서 SQL에 삽입하기 (0) | 2019.09.23 |
---|---|
Oracle DB6_ 고유키,외래키,Join (0) | 2019.09.22 |
OracleDB4_ DUAL테이블, 문자조작함수, 숫자조작함수, 날짜조작함수, 데이터타입변환, NVL함수 (0) | 2019.09.17 |
Oracle DB3_ 워크시트 만들기, AS, DISTINCT, AND, BETWEEN, IN, NOT IN, 대소문자 구분, AND OR NOT, LIKE, NULL, UNION, INTERSECT, MINUS (0) | 2019.09.17 |
Oracle DB2_기본적인 sql 쿼리 실행하기, 오라클 계정 실습 (0) | 2019.09.14 |