STUDY/database

[MySQL] 데이터 조회(5) group by

까미이모 2023. 11. 27. 23:43

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