ORDER BY
- 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용한다
- default 정렬방식은 오름차순
- 오름차순 정렬은 ASC
- 내림차순 정렬은 DESC
-- 연봉 오름차순
SELECT * FROM employee ORDER BY salary;
-- dept_id 기준 + 연봉 내림차순
SELECT * FROM employee ORDER BY dept_id ASC, salary DESC;
aggregate function
- 여러 tuple들의 정보를 요악해 하나의 값으로 추출하는 함수
- 대표적으로 COUNT, SUM, MAX, MIN, AVG 함수가 있다
- (주로) 관심있는 attribute에 사용된다 e.g.) AVG(salary), MAX(birth_date)
- NULL 값들은 제외하고 요약 값을 추출한다
GROUP BY
- 관심있는 attribute(s) 기준으로 그룹을 나눠서 그룹별로 aggregate function을 적용하고 싶을 때 사용
- grouping attribute(s) : 그룹을 나누는 기준이 되는 ateribute(s)
- grouping attribute(s)에 NULL 값이 있을 때는 NULL 값을 가지는 tuple끼리 묶인다
HAVING
- GROUP BY와 함께 사용
- aggregate function 의 결과값을 바탕으로 그룹을 필터링하고 싶을 때 사용
- HAVING절에 명시된 조건을 만족하는 그룹만 결과에 포함
-- 회사 전체 평균 연봉보다 평균 연봉이 적은 부서들의 평균 연봉을 알고 싶다
SELECT dept_id, AVG(salary)
FROM employee
GROUP BY dept_id
HAVING(salary) < (
SELECT AVG(salary) FROM employee
);
SELECT 구성 & 실행순서
6. SELECT attribute(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 쿼리에서 각 절의 실행순서는 개념적인 순서이다
- select 쿼리의 실제 실행순서는 각 RDBMS에서 어떻게 구현했는지에 따라 다르다
참고: 쉬운코드
'STUDY > database' 카테고리의 다른 글
| stored procedure설명 / 장단점 (1) | 2023.12.03 |
|---|---|
| [MySQL] stored function (0) | 2023.11.27 |
| [MySQL] 데이터조회(4) JOIN (0) | 2023.11.27 |
| [MySQL]데이터 조회(3) NULL (0) | 2023.11.27 |
| [MySQL] 데이터 조회(2) subquery (0) | 2023.11.27 |