ORDER BY(정렬)
- 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용한다.
- 오름차순 정렬은 ASC(default 정렬 방식), 내림차순 정렬은 DESC로 표기한다.
SELECT * FROM EMPLOYEE ORDER BY dept_id (ASC), salary DESC;
- dept_id 순으로 정렬하되, dept_id 그룹 별로는 salary 내림차순으로 정렬된다.
aggregate function(집계 함수)
- 여러 tuple들의 정보를 요약해서 하나의 값으로 추출하는 함수
- 대표적으로 COUNT, SUM, MAX, MIN, AVG 함수가 있다.
- (주로) 관심있는 attribute에 사용된다.
- NULL 값들은 제외하고 요약 값을 추출한다.
SELECT COUNT(*) FROM employee;
⬇️ 프로젝트 2002에 참여한 임직원 수, 최대 연봉, 최소 연봉, 평균 연봉을 알고 싶다면
SELECT COUNT(*), MAX(salary), MIN(salary), AVG(salary)
FROM works_on W JOIN employee E ON W.empl_id = E.id
WHERE W.proj_id = 2002;
group by(그룹핑)
- 관심있는 attribute(s) 기준으로, 그룹 별로 aggregate function을 적용하고 싶을 때 사용한다.
- Grouping attribute(s) : 그룹을 나누는 기준이 되는 attribute(s)
- grouping attribute(s)에 NULL 값이 있을 때는 NULL 값을 가지는 tuple끼리 묶인다.
⬇️ 각 프로젝트에 참여한 임직원 수, 최대 연봉, 최소 연봉, 평균 연봉을 알고 싶다면
SELECT W.proj_id, COUNT(*), MAX(salary), MIN(salary), AVG(salary)
FROM works_on W JOIN employee E ON W.empl_id = E.id
GROUP BY W.proj_id;
HAVING
- GROUP BY와 함께 사용한다.
- aggregate function의 결과값을 바탕으로 그룹을 필터링할 때 사용한다.
- HAVING 절에 명시된 조건을 만족하는 그룹만 결과에 포함된다.
⬇️ 프로젝트 참여 인원이 7명 이상인 프로젝트들에 대해서, 각 프로젝트에 참여한 임직원 수, 최대 연봉, 최소 연봉, 평균 연봉을 알고 싶다면
SELECT W.proj_id, COUNT(*), MAX(salary), MIN(salary), AVG(salary)
FROM works_on W JOIN employee E ON W.empl_id = E.id
GROUP BY W.proj_id
HAVING COUNT(*) >= 7;
SELECT 실행 순서
6- SELECT attribute(s) or aggregate function(s)
1- FROM table(s)
2- WHERE condition(s)
3- GROUP BY group attribute(s)
4- HAVING group condition(s)
5- ORDER BY attribute(s)
- SELECT 쿼리에서 각 절(phrase)의 실행 순서는 개념적인 순서이다.
- 실제 실행 순서는 각 RDBMS에서 어떻게 구현했는지에 따라 다르다.
'공부 기록 > Database' 카테고리의 다른 글
MQL, Query Filter, Operator (0) | 2023.06.24 |
---|---|
MongoDB 설치하기 (0) | 2023.06.23 |
Join (0) | 2023.06.02 |
Three-Valued Logic (0) | 2023.05.04 |
쿼리 안의 쿼리(서브쿼리) (0) | 2023.05.02 |