본문 바로가기

SQL

3. Order by 절, 중복행 제거

1. 성질

- 정렬
- 오름차순, 내림차순 정렬 순서 전달 가능( 기본 : 오름차순 )
- 정렬을 수행하지 않으면 데이터의 입력 순서대로 출력
- order by 절에 컬럼을 나열하여 1차정렬, 2차정렬, 3차정렬 ... 가능
- 각 컬럼별로 정렬순서 전달 가능(asc: 오름차순 | desc: 내림차순)

 

예제) student 테이블에서 모든 학생의 이름, 학년, 키를 출력하되, 학년별로 키가 큰 순서대로 출력(단, 4학년부터 출력)

select name, grade, height
  from student 
 order by grade desc, height desc ;  

 

출력하면

다음과 같은 결과를 얻을 수 있다. 

 

2. 컬럼 별칭을 사용한 정렬 

 

2-1) 별칭 또는 컬럼명을 섞어서 정렬해도 가능하다. 

select name, grade as 학년, height as 키
  from student 
 order by 학년 desc, 키 desc ;  


select name, grade as 학년, height as 키
  from student 
 order by grade desc, 키 desc ; 

 

둘 다 다음과 같은 동일한 결과를 얻을 수 있다. 

 

2-2) 컬럼별칭의 쌍따옴표 전달

 

select name, grade as "grade!", height as 키
  from student
 order by grade! desc, 키 desc ;              -- 에러 발생 : 이유는 별칭의 order by 뒤에 grade! 양 옆에 쌍따옴표가 없기때문

 

 

 


select name, grade as "grade!", height as 키
  from student
 order by "grade!" desc, 키 desc ;            -- 정상출력(반드시 쌍따옴표와 함께 전달)
 

 

 


select name, grade as grade, height as "키"
  from student
 order by grade desc, 키 desc ;               -- 정상출력(쌍따옴표 생략 가능)
-- 키는 단독으로 쓸 수 있었기 때문에 반드시 쌍따옴표 가져갈 필요는 없다.

 

 

 


참고)  문자의 정렬 규칙 : 맨 왼쪽부터 비교한다.

 

 

3. distinct
- 중복행을 제거하여 한 번만 출력하기 위해 사용
- select 절 바로 뒤에 단 한번만 사용

select distinct deptno
  from emp;

다음과 같이 출력

 

select distinct deptno, job
  from emp
 order by deptno, job;

 

 


[ 연습문제 ]

1. EMP 테이블에서 가장 최근에 입사한 순으로 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라.

 

sol)


select empno, ename, job, sal, hiredate, deptno
  from EMP
 order by hiredate desc;
 

 

 

 

 

 

 


2. EMP 테이블에서 (JOB이 PRESIDENT이고 급여가 1500 이상)이거나 업무가 salesman인 사원의 사원번호, 이름, 업무, 급여를 출력하여라.

 

sol)


select empno, ename, job, sal 
  from EMP
 where (job = 'PRESIDENT' and  sal>=1500) or job = 'SALESMAN' ;

 

 

 


3. EMP 테이블에서 급여가 1100 이상이거나, 이름이 M으로 시작하지 않는 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라.

 

sol)


select empno, ename, job, sal, hiredate, deptno
   from EMP
  where sal>=1100 or ename not like 'M%';

 

 

'SQL' 카테고리의 다른 글

6. 문자열 함수(2)  (2) 2024.10.16
5. 문자열 함수(1)  (0) 2024.10.15
4. 연결연산자(||), 논리연산자  (4) 2024.10.15
2. 계정 접속과 권한  (1) 2024.10.15
1. Select ~ From  (2) 2024.10.14