group by는 데이터를 그룹화해서 처리할 경우 사용합니다.

 

select에서의 groupby는 조회하는 컬럼이 group by에 맞추어 설정해야 합니다.

또한 그룹함수(count, sum, avg, max, min)만 사용할 수 있다는 점도 참고하시면 되겠습니다.

 

예제로 넘어가겠습니다.

SELECT JOB_ID, AVG(SALARY)
  FROM EMPLOYEES 
 GROUP BY JOB_ID
HAVING AVG(SALARY) >= 10000 AND JOB_ID NOT LIKE '%CLERK%'
;

오라클에 있는 HR을 이용하였습니다.

 

위의 예제는 "사원들의 업무별 급여평균이 10000달러보다 큰 경우의 업무별 급여평균. 하지만 부서에 'CLERK' 라는 문구는 포함하지 않는다"를 나타낸것입니다.

 

select 옆에 조회할 컬럼에서는 모두 group by에 있는 컬럼을 기준으로 나타냅니다

 

세번째 줄에 group by job_id라는게 보일텐데, 이는 employees 테이블의 job_id컬럼을 group by한다는 뜻입니다.

 

첫번째 줄로 돌아와서 select job_id 라는게 보일텐데, job_id에 그룹화를 하여 조회한 것을 알 수 있습니다.

 

↓출력결과 보겠습니다.

 

예제로 넘어가서 밑에 having이라는 것이 보일텐데 이는 group by의 검색조건입니다.

 

이는 having절을 단독으로 사용할 수 없고, 반드시 group by와 동반되어야 합니다.

 

group by에서 job_id라는 컬럼에서 'CLERK'라는 이름이 포함된 부서는 제외해야하는데, 이는 그룹화된 컬럼에서 조건을 찾아야하기 때문에 where가 아닌, having에서 찾아야합니다.

 

 

'코딩 > Oracle' 카테고리의 다른 글

Oracle NVL, NVL2  (0) 2020.07.07
Oracle Foreign key 외래키  (0) 2020.07.05
SQL 오라클 view 만들기  (0) 2020.06.27
SQL join문 이용하기(select절)  (0) 2020.06.25
SQL 오라클 서브쿼리  (0) 2020.06.24
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기