집계 함수, 그룹 함수, 윈도우 함수
COUNT(*) // "NULL값을 포함"한 행의 수
COUNT(표현식) // 표현식이 "NULL인 것을 제외"한 행의 수
SUM(표현식) // 표현식의 "NULL값을 제외"한 합계
AVG(표현식) // 표현식의 "NULL값을 제외"한 평균
// Case1. 칼럼명 사용
SELECT DNAME, LOC, DEPTNO
FROM DEPT
ORDER BY DNAME, LOC, DEPTNO DESC;
// Case2. 칼럼명 + ALIAS명 사용
SELECT DNAME DEPT, LOC AREA, DEPTNO
FROM DEPT
ORDER BY DNAME, AREA, DEPTNO DESC;
// Case3. 칼럼 순서번호 + ALIAS명 사용
SELECT DNAME, LOC AREA, DEPTNO
FROM DEPT
ORDER BY 1, AREA, 3 DESC;
[53번] GROUP BY
중첩된 그룹함수는 최종 결과값이 1건이므로 group by 기준인 2개의 컬럼을 select절에 기술할 수 없다.
[55번] GROUP BY, ORDER BY
GROUP BY를 사용할 경우, ORDER BY에 GROUP BY 표현식이 아닌 값은 기술될 수 없다.
[59번] SELECT 문장 실행 순서
1) FROM
: 테이블 참조
2) WHERE
: 대상 데이터 아닌 것은 제거
3) GROUP BY
: 행들을 소그룹화
4) HAVING
: 그룹핑된 값의 조건에 맞는 것만 출력
5) SELECT
: 데이터 값 출력/계산
6) ORDER BY
: 데이터 정렬
순위가 높은 N개의 로우를 추출하기 위해 ORDER BY 절과 WHERE 절의 ROWNUM 조건을 같이 사용한다.
데이터의 일부가 먼저 추출된 후 정렬 작업이 일어나므로 주의하자.
// TOP(2): 급여가 높은 2명을 출력
// WITH TIES: 같은 급여를 받는 사원이 있으면 같이 출력
SELECT TOP(2) WITH TIES ENAME, SAL
FROM EMP
ORDER BY SAL DESC;