본문 바로가기
클래스 리뷰/22.05 빡공단 SQL 강의

빡공단 22기 도전기 - SQL 그룹함수3 (19일차)

by 직_장인 2022. 11. 30.

 

그룹함수 : Part 3

 

1. HAVING()

  • 행(row) 데이터에서 필터링을 할 때는 WHERE()를 사용했지만,
  • 집계된 결과에서 다시 필터링을 하려면 HAVING()을 사용한다.
  • GROUP BY()로 집계 된 id의 건수에서 5초과인 값을 추출한다
  • 순서는 GROUP BY() 다음에 위치한다.(순서는 꼭 지켜야 한다.)

 

1-1. 연습문제

SELECT : 5번 화면에 표시할 열을 지정한다.
  FROM : 1번 테이블을 불러온다
 WHERE : 2번 테이블에서 행기준으로 필터링을 한다.
 GROUP BY : 3번 그룹으로 묶을 열을 지정한다.
HAVING : 4번 추가로 집계 조건을 적용한다.
ORDER BY : 6번 나열 순서를 정한다.
 
  • WHERE()에서는 department_id기준으로 40, 50, 50인 행만 필터링 한 후,
  • GROUP BY()에서 job_id기준으로 묶는다.
  • 그다음 HAVING()을 이용하여 평균 급여가 5000이상인 사람만 필터링 한다.

 

2. 총합계 : ROLLUP()

  • 먼저 데이터를 정리한다.
  • null값을 '대기'로 바꿔준다.
  • SELECT()에서 컬럼을 수정해야 한다면, SELECT()보다 이전에 실행되는 GROUP BY()도 같이 수정이 되야 한다.
  • GROUP BY()에서 집계한 후 SELECT()에서 그대로 표시해주기 때문이다.

 

  • ROLLUP()은 GROUP BY() 안에서 사용 가능하다.
  • ROLLUP()은 GROUP BY()로 집계가 끝난 후, 합계를 만들어주기 때문에 제어가 필요하다면 SELECT()에서 한다

 

19일차 인증!

 

 

 

 

댓글