학습목표

1. ORDER BY절을 이용해서 검색 행을 정렬한다.

2. 다양한 방법으로 정렬을 수행한다.

3. 정렬을 이용해서 묶음 검색한다.

 

 

 

part 1.  ORDER BY절을 이용해서 검색 행을 정렬한다.

정렬 검색

 

 

‐ ORDER BY : 지정된 컬럼을 대상으로 정렬을 수행한다.

‐ ASC는 오름차순 정렬, DESC는 내림차순 정렬을 지정한다.

.default : ASC ‐ 정렬대상인 컬럼이 여러 개인 경우 앞에 지정한 컬럼이 동일 한 값에 대해서 뒤에 지정 된 컬럼으로 정렬된다

‐ 정렬하지 않는 SELECT문의 출력 순서는 의미가 없다.

‐ 정렬 대상으로는 컬럼 이외에 다음의 것들이 사용 가능하다.

.별명, 수식, 검색 항목 순서

 

• 원칙 : RDB에서 행의 순서나 컬럼의 순서는 의미가 없다.

‐ 순서는 Application이다

 

 

part 2.  다양한 방법으로 정렬을 수행한다.

 

 

주의사항

 

 

 

part 3.  정렬을 이용해서 묶음 검색한다.

묶음 검색

 

• 업무별로 사원의 급여를 검색한다.

 

 

ORDER BY 업무에 defalut 값이 ASC여서 자동으로 오름차순 정렬로 나왔다.

 

• 부서별로 사원의 급여를 검색한다.

 

ORDER BY 부서번호에 defalut 값이 ASC여서 자동으로 오름차순 정렬로 나왔다. 그러나 sal은 DESC인 내림차순 정렬을 사용하여 부서번호마다. 내림차순으로 정렬되었다.

 

 

의미 없는 검색

 

 

‐ 결과에 ORDER BY절의 의미가 없다.

 

 

• 카디널리티(Cardinality)

‐ 중복 정도 ‐ 성별 : 카디널리티가 낮다.

‐ 이름 : 카디널리티가 높다.

 

 

실습

1. 성적순으로 학생의 이름을 검색한다.
SELECT sno, sname, avr
FROM student
ORDER BY avr DESC;
 
2. 학과별 성적순으로 학생의 정보를 검색한다.
SELECT *
FROM student
ORDER BY major, avr DESC;
 
3. 학년별 성적순으로 학생의 정보를 검색한다.
SELECT *
FROM student
ORDER BY syear DESC, avr DESC;
 
4. 학과별 학년별로 학생의 정보를 성적순으로 검색한다.
SELECT *
FROM student
ORDER BY major, syear DESC, avr DESC;
 
5. 학점 순으로 과목 이름을 검색한다.
SELECT cno, cname, st_num
FROM course
ORDER BY st_num DESC;
 
6. 각 학과별로 교수의 정보를 검색한다.
SELECT *
FROM professor
ORDER BY section;
 
7. 지위별로 교수의 정보를 검색한다.
SELECT *
FROM professor
ORDER BY orders DESC;
 
8. 각 학과별로 교수의 정보를 부임일자 순으로 검색한다.
SELECT *
FROM professor
ORDER BY section, hiredate;
 
9. 급여가 10% 인상된 경우 부서별로 각 사원의 연봉을 연봉순으로 검색한다.
SELECT eno, ename, sal*1.1, NVL(comm,0), ((sal*1.1)+NVL(comm,0)) 연봉, dno
FROM emp 
ORDER BY dno, 연봉 DESC;
 
 
10. 보너스가 100% 인상된 경우 업무별로 각 사원의 연봉을 연봉순으로 검색한다.
SELECT eno, ename, sal, NVL(comm*2,0), (sal+NVL(comm*2,0)) 연봉, dno
FROM emp
ORDER BY dno, 연봉 DESC;
2024. 4. 22. 15:15