ORDER BY
ORDER BY란 SELECT한 컬럼에 대해 정렬을 할 때 작성하는 구문으로 SELECT 구문의 가장 마지막에 작성하며 실행 순서 역시 가장 마지막에 수행된다.
[ 표현식 ]
정렬 방식은 ASC는 오름차순이고 DESC은 내림차순이다. 또는, 컬럼명이 아닌 컬럼의 순서를 숫자로 표기할 수 있다.
[ ORDER BY 예시 ]
- EMPLOYEE 테이블에서 부서별 코드, 부서별 급여합, 부서별 급여 평균, 부서별 인원 수를 부서코드 순으로 조회
GROUP BY
GROUP BY란 그룹 함수는 단 한 개의 결과 값만 산출하기 때문에그룹이 여러 개일 경우 오류 발생한다. 그래서 여러 개의 결과 값을 산출하기 위해 그룹 함수가 적용될 그룹의 기준을 GROUP BY절에 기술하여 사용한다.
즉, 코드를 이렇게 작성하면
DEPT_CODE는 여러개의 값을 불러오는데 SUM값이 1개만 나오기 때문에 에러가 나타난다.
그래서 DEPT_CODE 그룹별로 합을 구하려면 GROUP BY절을 써야한다.
코드를 이렇게 작성하면
DEPT_CODE별로 그룹을 묶어서 결과가 이렇게
[ GROUB BY 예시 ]
- EMPLOYEE테이블에서 부서코드, 그룹 별 급여의 합계, 그룹 별 급여의 평균(정수처리), 인원 수를 조회하고 부서 코드 순으로 정렬
- EMPLOYEE테이블에서 부서코드와 보너스 받는 사원 수 조회하고 부서코드 순으로 정렬
GROUP BY에 함수를 입력하여 그룹으로 묶을 수 있다.
- EMPLOYEE테이블에서 성별과 성별 별 급여 평균(정수처리), 급여 합계, 인원 수 조회하고 인원수로 내림차순 정렬
여러 컬럼을 그룹으로 묶을 수 있다
- EMPLOYEE테이블에서 부서 코드 별로 같은 직급인 사원의 급여 합계를 조회하고 부서 코드 순으로 정렬
HAVING
HAVING이란 그룹 함수로 값을 구해올 그룹에 대해 조건을 설정할 때 HAVING절에 기술한다.
WHERE절은 각 컬럼 값에 대한 조건을 설정할 수 있지만 HAVING절은 그룹에 대해 조건을 설정한다.
[ HAVING 예시 ]
그룹별 조회
- 부서 코드와 급여 3000000 이상인 직원의 그룹별 평균 조회
그룹을 조회
- 부서 코드와 급여 평균이 3000000 이상인 그룹 조회
'SQL' 카테고리의 다른 글
[SQL] JOIN 정리 (INNER, OUTER, CROSS, SELF JOIN) (1) | 2022.12.29 |
---|---|
[SQL] 데이터 조작 (INSERT, UPDATE, DELETE) (1) | 2022.12.28 |
[SQL] 데이터베이스 객체 (0) | 2022.12.27 |
[SQL] 데이터베이스 생성, 편집 (0) | 2022.12.27 |
[SQL] 데이터베이스 모델링 (0) | 2022.12.26 |