살아가는 이유_EU
내가 살아가는 이유, 삶
살아가는 이유_EU
전체 방문자
오늘
어제
  • 삶 (159)
    • 이유's EATERY (16)
      • 맛집 (10)
      • 까페 (4)
      • 맛있는 Recipe (1)
    • 이유's LIFE (16)
      • 국내여행 (5)
      • 해외여행 (2)
      • 운동 (1)
      • 취업정보 (0)
      • 끄적끄적 (5)
      • 일기쟝 (3)
      • 세상 이야기 (0)
      • 결혼 준비 (0)
    • 이유's Programming (43)
      • JavaScript (6)
      • Java (7)
      • C++ (0)
      • DBMS (24)
      • Spring (3)
      • til (1)
      • HTTP (2)
    • 이유's REVIEW (13)
      • BOOK (6)
      • PROGRAM or MOVIE (5)
      • PRODUCT 제품리뷰 (2)
    • 이유's STUDY (31)
      • 수업 관련 (2)
      • IT 시사 (2)
      • IT NEWS (2)
      • IVIEW (0)
      • IOS 앱 만들기 (0)
      • 알고리즘 문제풀이 (23)
      • PM data literacy (2)
    • 이유's ENGLISH (13)
      • Writing about something! (12)
      • Feedback (1)
      • TIL (0)
    • 이유's DB 공부 (1)
      • MySQL DB (0)
      • Postgre (1)
    • Computer 공부 (17)
      • Backend question (10)
      • Clean architecture (2)
      • Operating system (2)
      • Network (3)
      • 항해 (0)

블로그 메뉴

  • 홈
  • EATERY's 맛집
  • CAFE 까페
  • Recipe 레시피
  • IT 공부
  • 방명록
  • 태그

공지사항

인기 글

태그

  • 용인추천
  • have something to do with
  • have something to do with뜻
  • 영어공부
  • 송계옥
  • 아메리카토노
  • 스테이크
  • 피지오필로소피
  • 스쿤브레드
  • 자세요정
  • 흑임자 크림
  • go hand in hand
  • 고메동 카페
  • React.memo
  • 어게인마이라이프
  • Array로 접근
  • 렌더링 수 줄이기
  • 인절미 티라미수
  • key 로 접근
  • map 하는 법
  • 현명하게 리액트
  • 자바스크립트
  • memoziation
  • 고메커피
  • 삼돈식탁
  • 용인까페
  • 파스타맛집
  • 묵리
  • 용인맛집
  • 맛집

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
살아가는 이유_EU

내가 살아가는 이유, 삶

이유's Programming/DBMS

SQL 쿼리 - group by / having

2021. 4. 6. 16:36
728x90
반응형

 

집계 함수는 여러 행들의 그룹이 모여서 단 하나의 결과를 돌려주는 함수를 말하는 것! 

 

그래서 크게 어떤 데이타를 어떤 기준으로 묶을 때 우리는 집계 함수를 쓰게 된다. 

 

GROUP BY 함수 

- Group by 절은 행들을 소그룹화한다.

- SELECT 절 / HAVING 절 / ORDER BY  절에 사용할 수 있다. 

 

 

예시 ) 케이리그 선수들의 포지션별 평균키는 어떻게 되는가? 란 요구사항에 맞는 쿼리 

 

SELECT POSITION AS 포지션, AVG ( HEIGHT) AS 평균키
FROM PLAYER 
GROUP BY 포지션 
HAVING AVG ( HEIGHT) >= 180

 

CASE 표현을 활용한 월별 데이터 집계 

집계함수 ( CASE () ~ GROUP BY ) 기능은 반복되는 칼럼을 이제 구분용 칼럼을 통해서 여러 개의 레코드로 만들 수 잇는 것. 

집합을 정해진 칼럼 수만큼 확장해 집계 보고서를 만드는 유용한 기법임.  

 

SELECT ENAME AS 사원명, DEPTNO AS 부서번호, 
CASE MONTH WHEN 1 THEN SAL END AS MO1 ,
CASE MONTH WHEN 2 THEN SAL END AS MO2 ,
CASE MONTH WHEN 3 THEN SAL END AS MO3 ,
CASE MONTH WHEN 4 THEN SAL END AS MO4 ,
CASE MONTH WHEN 5 THEN SAL END AS MO5 ,
CASE MONTH WHEN 6 THEN SAL END AS MO6 
FROM ( SELECT ENAME, DEPTNO, EXTRACT ( MONTH FROM HIREDATE) AS MONTH, SAL FROM EMP) ;

이런식으로 각 월별로 CASE MO1 , MO2 등의 컬럼을 통해서 결과 값을 보여줄 수 있다. 

 

집계함수와 NULL 처리 

- 결과값을 NULL 이 아닌 0 으로 표현하기 위해 NVL 함수 를  사용하는 경우가 많다. 

- CASE 를 사용시 ELSE 를 까먹고 안사용하게 되면 ELSE 값이 NULL 이 된다. 따라서 이 경우를 이제 NVL 로 묶어줄 수 있다. 

e.g) NVL ( SUM ( CASE POSITION WHEN 'FW' THEN 1 ELSE 0 END), 0 ) AS FW

 

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'이유's Programming > DBMS' 카테고리의 다른 글

[ 3- 4] 그룹 소계함수 - 보고서 작성을 훨씬 쉽고 매끄럽게! group by 와 order by 사용 / rollup 과 order by 함수  (0) 2021.04.22
다중 행 서브 쿼리  (0) 2021.04.19
[ 4 - 3] 인덱스 종류  (0) 2021.03.31
[ 4 -2 ] 인덱스 스캔 방식 -  (0) 2021.03.25
[ 4 -1 ] 인덱스 기본 원리 / Balanced Tree ( B Tree)  (4) 2021.03.24
    '이유's Programming/DBMS' 카테고리의 다른 글
    • [ 3- 4] 그룹 소계함수 - 보고서 작성을 훨씬 쉽고 매끄럽게! group by 와 order by 사용 / rollup 과 order by 함수
    • 다중 행 서브 쿼리
    • [ 4 - 3] 인덱스 종류
    • [ 4 -2 ] 인덱스 스캔 방식 -
    살아가는 이유_EU
    살아가는 이유_EU
    안녕하세요. 초보개발자의 일상을 담은 블로그입니다.

    티스토리툴바