조회된 순서대로 순번을 매긴다.
SELECT ROWNUM
, a.*
FROM emp a
ORDER BY 를 사용하면 순번이 뒤섞이므로 정렬된 서브쿼리 결과에 ROWNUM 을 매겨야 한다.
SELECT ROWNUM
, x.*
FROM ( SELECT a.*
FROM emp a
ORDER BY a.ename
) x
--관리자 번호 및 해당 관리자에 속한 사원들의 최저 급여를 출력하라.
--단 관리자가 없는 사원 및 최저급여가 1000미만인 그룹을 제외시키고 급여를 기준으로 (내림차순으로) 출력
SELECT MGR, MIN(SAL) FROM EMP WHERE MGR IS NOT NULL
GROUP BY MGR HAVING MIN(SAL) >= 1000 ORDER BY MIN(SAL) DESC;
--관리자 수를 출력하되 관리자 번호가 중복되지 않게하라 그리고 컬럼명을 number of manager로 지정하여 출력하라.
SELECT COUNT(DISTINCT(MGR)) AS "Number of Manager" FROM EMP;
- 부서별로 부서이름, 부서위치, 사원 수 및 평균 급여를 출력하라.
그리고 각각의 컬럼명을 부서명,위치,사원의 수,평균급여로 표시하라.
SELECT D.DNAME, D.LOC, COUNT(E.EMPNO), AVG(E.SAL) AS AVG
FROM EMP E, DEPT D
WHERE D.DEPTNO = E.DEPTNO GROUP BY D.DNAME, D.LOC;
- 페이징을 위한 mvc_board 쿼리
SELECT * FROM (
SELECT ROWNUM AS RNUM, A.* FROM (
SELECT
*
FROM
mvc_board
order by bGroup desc, bStep asc
) A WHERE ROWNUM <= #{pageNum} * #{amount}
) WHERE RNUM > (#{pageNum}-1) * #{amount}