위지원의 데이터 일기 🐈
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
블로그 내 검색
포트폴리오

위지원의 데이터 일기 🐈

데이터를 사랑하고 궁금해하는 기록쟁이입니다! 😉 Super Data Girl이 되는 그날까지🏃‍♀️ 화이팅!

  • 🖥 깃블로그
  • 🌍 위키원
  • 📑 내맘대로 스크랩
  • 💌 메일
  • 2022년/Developement

    [ORACLE] GROUPING 함수에 관하여..

    2022. 7. 26. 14:19

    by. 위지원

    오라클의 그룹함수를 공부하려한다.

    사용한 테이블은 아래 링크에 존재한다!

    http://sqlfiddle.com/#!4/9b2918/1/0

     

    SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.

    Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run.

    sqlfiddle.com

     

    0. 기본 테이블 생성

    아래처럼 그냥 기본적인 Table을 하나 생성하고.. 

     

    1. GROUP BY

    너무나도 기본적인 함수이다.

    SELECT 게시글ID
         , 월
         , SUM(조회수) AS 전체조회수
      FROM 위지원의포스팅
    GROUP BY 게시글ID
           , 월;

     

    2. ROULLUP

    SELECT 게시글ID
         , 월
         , SUM(조회수) AS 전체조회수
      FROM 위지원의포스팅
    GROUP BY ROLLUP(게시글ID, 월);

    GROUP BY 와 다르게 null과 함께 총계가나온다. 

     

    GROUP BY 파라미터 값의 순서에 따라서 쿼리 결과는 달라진다. 

     

    3. CUBE 

    SELECT 게시글ID
         , 월
         , SUM(조회수) AS 전체조회수
      FROM 위지원의포스팅
    GROUP BY CUBE(월, 게시글ID);

    CUBE 함수는 모든 경우의 수에 대해 소계와 총계를 출력한다.  GROUP BY 파라미터 값의 순서에 따라서 쿼리 결과는 달라지지 않는다.

    아래보면 월별 소계가 추가된 것을 알 수 있다.

     

    4. GROUPING SETS

    SELECT 게시글ID
         , 월
         , SUM(조회수) AS 전체조회수
      FROM 위지원의포스팅
    GROUP BY GROUPING SETS(월, 게시글ID);

    ROLLUP, CUBE와 달리 계층 결과가 아니고 GROUP BY 파라미터 값의 순서에 따라서 쿼리 결과는 달라지지 않는다.

     

    5. GROUPING 

    이 함수를 쓰기에 앞서 하나 알게된 사실은,, GROUPING() 안에 들어가는 컬럼은 CHAR 형태여야한다는 것이다. 

    그래서 테이블 생성을 아래처럼 변경했다.

    CREATE TABLE 위지원의포스팅 (
      게시글ID VARCHAR2(10),
      월 VARCHAR2(10),
      카테고리 VARCHAR2(10),
      조회수 INTEGER
    );
    
    INSERT INTO 위지원의포스팅 VALUES ('p1', '2022-05', '개발', 140);
    INSERT INTO 위지원의포스팅 VALUES ('p1', '2022-06', '개발', 440);
    INSERT INTO 위지원의포스팅 VALUES ('p2', '2022-05', '에러', 240);
    INSERT INTO 위지원의포스팅 VALUES ('p2', '2022-07', '에러', 140);
    INSERT INTO 위지원의포스팅 VALUES ('p3', '2022-05', '기타', 340);
    SELECT CASE GROUPING(게시글ID) WHEN 1 THEN '모든게시글ID' ELSE 게시글ID END 게시글ID
         , CASE GROUPING(월) WHEN 1 THEN '모든월' ELSE 월 END 월
         , SUM(조회수) 조회수
      FROM 위지원의포스팅
    GROUP BY ROLLUP(게시글ID, 월);
    # 위에 ROLLUP 함수는 CUBE, GROUPING SETS 로 바꿔서 사용이 가능하다

    그럼 아래와 같은 결과를 얻을 수 있다.

    이 쿼리에서 WHEN 1 THEN '모든~' 이 집계를 담당하는 부분이다! 😊

    저작자표시 (새창열림)

    '2022년 > Developement' 카테고리의 다른 글

    Nifi 설치 및 실행, 예제 및 kafka, hdfs연결해보기  (0) 2022.08.09
    Apache Nifi란?  (0) 2022.08.08
    오라클 계층형 쿼리  (0) 2022.07.11
    Object Detction model  (2) 2022.05.31
    docker elk 더 좋은 repo를 찾아내다!  (0) 2022.04.15

    잠깐만요~! 읽으신김에 이런 글들은 어떠세요? 👀

    • Nifi 설치 및 실행, 예제 및 kafka, hdfs연결해보기 2022.08.09
    • Apache Nifi란? 2022.08.08
    • 오라클 계층형 쿼리 2022.07.11
    • Object Detction model 2022.05.31
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

열정! 열정! 열정! 🔥

Designed by Nana
블로그 이미지
위지원
데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

티스토리툴바

티스토리툴바