반응형

오라클을 포함한 모든 관계 데이터베이스에서는 order by 절을 이용하지 않는 한, 쿼리 결과를 자동적으로 정렬하지 않는다.

즉 결과를 정렬하기 위해서는 반드시 order by 절을 사용해야만 한다.

이제부터는 HR 사용자를 이용해 알아보자.



여기서는 직원들의 월급을 오름차순으로 정렬하였다. 오른차순 정렬은 Default 값이고, ASC 키워드를 이용해 직접 지정하는 것도

가능하다. 내림차순으로 정리하려면 다음과 같은 형식을 이용하면 된다.



[Try it Out] 여러 열을 사용한 정렬



▒ 결과분석

이 예에서는 다수 열 정렬 순서를 적용하여 먼저 직원의 JOB_ID로 정렬한 후, 직원의 SALARY로 정렬하도록 했다.

Default 오름차순 정렬이 이용되므로 낮은 월급이 먼저 리스트 되고 높은 월급 순으로 진행된다. 이것은 같은 JOB_ID를 갖는

직원이 두 명 이상일 때만 적용된다. 예를 들어, SALARY를 첫번째 정렬 기준으로 지정했다면 Kochhar가 King 위쪽에 위치해

있을 것이다. 하지만 JOB_ID로 정렬했으므로, King이 Kochhar보다는 위쪽에 위치해 있다.

order by 절을 이용할 때는 다음과 같은 두 가지 사항을 기억하자.

1. 정렬의 기준이 될 열을 반드시 select 절에 포함될 필요는 없다. 정렬의 기준이 될 열을 보여줄 필요가 없는 경우 유용하다.

2. select 절 내에서 열 위치를 참조하는 숫자를 지정해 쿼리를 정렬할 수 있다.

▒ Group by 와 Having

group by 절은 쿼리 결과셋 내의 레코드들을 그룹으로 지정하여, 데이터의 집합을 얻거나 전체 그룹에 대한 요약 정보를 한 행으로

표시할 수 있게 해준다.

다음 쿼리는 HR의 EMPLOYEES 테이블에서 JOB_ID 열을 선택하여 SALARY 정보를 분석하는 용도로 사용된다.



이와 같이 각각의 JOB_ID에는 너무 많은 SALARY 값이 포함되어 있다. Group by 절이 유용하게 쓰일 수 있는 경우인 것이다.

이제부터 월급의 평균/합/최고금액 그리고 각 그룹 당 행의 수를 세는 몇 가지 SQL 함수와 함께 Group by 절을 사용해보자.



EMPLOYEES 테이블에서 모든 주식 관리자 (JOB_ID = ST_MAN)의 월급을 얻는 쿼리를 실행해 보면 앞의 Group by 쿼리 결과가

맞는지 확인할 수 있다.


결과를 계산해보면 ST_MAN인 직원의 SALARY 합은 36400이고, 이를 JOB_ID 직함을 가진 직원의 수로 나누면 7280을 얻게 된다.

Group by 절과 함께 Group by 쿼리에 의해 리턴된 행 그룹을 필터링할 수 있게 해주는 부가적인 절이 Having 절이다.

Having 절은 Group by 절을 이용하는 쿼리에서만 이용가능하며, 항상 AVG, SUM, MAX 등과 같은 집합 SQL 함수를 포함한다.
 

반응형

+ Recent posts