과목 II SQL 기본 및 활용

제1장 SQL 기본

제8절 ORDER BY 절

2. SELECT 문장 실행 순서

 

 

[예제] SELECT 절에 없는 EMP 칼럼을 ORDER BY 절에 사용한다.

 SELECT EMPNO, ENAME

 FROM EMP

 ORDER BY MGR;

문제가 틀렸습니다.

[SELECT 절에 없는 MGR 칼럼을 ORDER BY 절에 사용한다.] 라고 해석해야 됩니다.

EMP 는 테이블입니다.

 

[실행결과] 

(14개 행이 영향을 받음)

 

 


 

 

 

[예제] 인라인 뷰에 정의된 SELECT 칼럼을 메인쿼리에서 사용한다.

 SELECT EMPNO
 FROM (SELECT EMPNO, MGR FROM EMP) A
 ORDER BY MGR;

서브쿼리에서는 ORDER BY 를 사용하지 못합니다.

ORDER BY 절은 SELECT 절에서 오직 한 개만 올 수 있기 때문에 ORDER BY 절은 메인쿼리의 마지막 문장에 위치해야 합니다.

이 부분은 2장 4절 서브쿼리 부분에 나와있습니다.

따라서 ORDER BY 를 서브쿼리에서 빼고 메인쿼리의 마지막에 입력했습니다.

또한 서브쿼리를 A 라는 ALIAS 를 부여했습니다.

 

 

[실행결과]

(14개 행이 영향을 받음)

 

 


 

 

 

 

[예제] 인라인 뷰에 미정의된 칼럼을 메인쿼리에서 사용해본다.

 SELECT MGR
 FROM (SELECT EMPNO, ENAME FROM EMP) A;

위의 예제와 마찬가지로 서브쿼리에서는 ORDER BY 를 사용하지 못합니다.

 

 

[실행결과]

메시지 207, 수준 16, 상태 1, 줄 1
열 이름 'MGR'이(가) 잘못되었습니다.

 

 


 

 

 

[예제] GROUP BY 절 사용시 SELECT 절에 일반 칼럼을 사용해본다.

 SELECT JOB, SAL
 FROM EMP
 GROUP BY JOB
 HAVING COUNT(*) > 0
 ORDER BY SAL;

 

 

[실행결과]

메시지 8120, 수준 16, 상태 1, 줄 1
열 'EMP.SAL'이(가) 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다.

 


 

 

[예제] GROUP BY 절 사용시 ORDER BY 절에 집계 칼럼을 사용해본다.

 SELECT JOB
 FROM EMP
 GROUP BY JOB HAVING COUNT(*) > 0
 ORDER BY MAX(EMPNO), MAX(MGR), SUM(SAL), COUNT(DEPTNO), MAX(HIREDATE);

 

 

[실행결과]

경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다.

(5개 행이 영향을 받음)

 

'SQL 전문가 가이드' 카테고리의 다른 글

EQUI JOIN  (0) 2013.11.15
Top N 쿼리  (1) 2013.10.08
ORDER BY 정렬  (0) 2013.10.07
집계 함수와 NULL  (0) 2013.10.01
CASE 표현을 활용한 월별 데이터 집계  (0) 2013.10.01
Posted by G4.
,