학습목표
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;
'SQL' 카테고리의 다른 글
08. SQL- 다양한 조건 검색(NULL, BETWEEN, IN, LIKE) (2) | 2024.04.23 |
---|---|
07. SQL- WHERE절을 이용한 조건검색(날짜, 관계 연산자와 부정연산자) (0) | 2024.04.23 |
05. SQL- 연결 연산자와 중복의 제거 (0) | 2024.04.22 |
04. SQL- 출력 화면 제어 (0) | 2024.04.22 |
03. SQL- 다양한 SELECT문 활용 (0) | 2024.04.22 |