SELECT 구문 순서
select 컬럼, ...
from 테이블
where (그룹 묶기 전에 검사할) 조건식
group by 그룹을 묶어줄 컬럼이름
having 그룹을 묶은 다음에 검사할 조건식
order by 출력순서를 설정할 컬럼,...;
주의) 순서에 맞게! 순서를 바꿔서 FROM절을 먼저 기술하면 에러가 발생!
함수(function)
1. 단일 행 함수 : 예) UPPER, LOWER, INITCAP
행(row)이 하나씩 함수의 argument로 전달되고, 행 마다 결과를 리턴하는 함수
-- nvl(컬럼이름, value): 컬럼의 값이 null 아니면 자기 자신을 리턴, null 이면 value를 리턴
-- nvl2(컬럼이름, value1, value2): 컬럼의 값이 null 아니면 value1을, null 이면 value2를 리턴.
예) select ename, lower(ename) from emp; select comm, nvl(comm,-1) ,nvl2(comm, comm,-1) from emp;
--2. 그룹 함수(다중 행 함수) :
-- 여러 개의 행(row)이 한꺼번에 함수의 argument로 전달되고,
-- 여러 개의 행에서 하나의 결과를 리턴하는 함수.
-- 예) count(개수), sum(합계), avg(평균), max(최댓값), min(최솟값), variance(분산), stddev(표준편차)
select count(ename), count(mgr), count(comm) from emp;
select sum(sal), avg(sal), max(sal), min(sal), variance(sal), stddev(sal) from emp;
예제)
--부서별 급여의 평균, 표준편차 찾기. 소수점 2자리까지 반올림.
-- 부서번호 순으로 오름차순
select deptno, round(avg(sal),2) as avg, round(variance(sal),2) as var
from emp
group by deptno
order by deptno;
※주의※) select 절에서 만든 별명은 where, group by, having에서는 사용할 수 없고
order by에서만 사용 가능!