[주의] 그룹함수끼리만 쓸 수 있다. 왜냐면 다른 컬럼이 오면 행의 개수가 달라지니까
아래 둘은 똑같은 결과를 출력한다!
SELECT COUNT(*) FROM EMP;
SELECT COUNT(ENAME) FROM EMP;
출력예시> 12
예시)
SELECT SUM(SAL) FROM EMP;
출력예시> 24925
위에서 말한 것처럼 단일행과 같이 올 수 없다.
예시)
SELECT ENAME, SUM(SAL) FROM EMP;
출력예시> SQL 오류: ORA-00937: 단일 그룹의 그룹 함수가 아닙니다.
예시)
SELECT MIN(SAL) 최저연봉, MAX(SAL) 최고연봉 FROM EMP;
출력예시>
최저연봉 최고연봉
---------- ----------
800............. 5000
(문제에서 나오는 ㅇㅇ별 을 그룹으로 묶어주면 되겠다.)
GROUP BY에 있는 컬럼은 SELECT절에도 들어가야함
예시) 부서별 사원들의 급여합
SELECT DEPTNO, SUM(SAL) "부서별 급여합" FROM EMP GROUP BY DEPTNO;
출력예시>
DEPTNO 부서별 급여합
---------- ----------
30 9400
10 8750
20 6775
예시) 사원들의 부서별 평균급여 구하기.(단, 평균급여가 2000이상인 부서만 출력
SELECT DEPTNO FLOOR(AVG(SAL)) 평균급여 FROM EMP GROUP BY DEPTNO HAVING FLOOR(AVG(SAL))>=2000
출력예시>
DEPTNO 평균급여
---------- ----------
10 2916.7
20 2258.3
오름차순: ASC (디폴트가 오름차순이므로 아무것도 안써주면 오름차순으로 정렬함)
내림차순: DESC