본문 바로가기

SQL/모두를 위한 postgreSQL

[PostgreSQL] 5. 데이터의 집계 및 결합_1

728x90

1. 다양한 데이터의 결합 방법
    1) 한 테이블에 여러 줄로 원하는 데이터가 분산되어 있는 경우
        -예를 들어 반 아이들의 이름, 성별, 키에 대한 테이블이 기존에 있을 때
         성별에 따른 평균 키를 구하기 위한 데이터는 여러줄에 걸쳐서 분산되어 있다
         이런 분산된 정보를 합치려면 GROUP BY 절을 이용해 '그룹화' 과정을 거쳐야 한다

    2) 여러 테이블에 같은 유형의 데이터가 분산되어 있는 경우
        -예를 들어 A반과 B반의 키 정보를 가진 테이블을 합쳐야 하는 상황이라면 
         2개의 테이블에 분산되어 있는 데이터를 세로로 합쳐야 두 반의 모든 키정보를 가진 테이블을 만들 수 있다
         이와 같이 세로로 테이블을 합치려면 UNION 혹은 UNION ALL 연산자를 사용한다
    
    3) 여러 테이블에 서로 다른 유형의 데이터가 분산되어 있는 경우
        -예를 들어 게시판에 사용자 정보와 게시글 정보를 함께 출력하고 싶을 때,
         데이터를 중복하지 않고 두 테이블을 가로 방향으로 합쳐 정보를 표시하려면
         FROM절에 두 테이블을 부르고 WHERE절에 조건을 걸어 합치거나 JOIN 연산자를 사용한다


2. 데이터 그룹화
    1) DISTINST 
        -테이블에서 중복되는 데이터를 없애는 명령어
        -SELECT절과 FROM절 사이에서 사용한다
        -SELECT문에 컬럼을 힌 개가 아닌 여러 개의 컬럼 지정도 가능하다

            SELECT DISTINST 컬럼1, 컬럼2
            FROM 테이블명;
         
    2) GROUP BY 
        -원하는 자료를 그룹화 하는 방법이다
        -SELECT절과 GROUP BY절에는 항상 같은 컬럼을 적거나 GROUP BY 관련 함수를 사용해야 한다
        -하나의 테이블을 새로운 관계를 갖고 있는 가상화 테이블을 만든다 라고 볼 수 있다
         (즉, 여러 데이터들이 있는 테이블에서 내가 원하는 데이터들만 묶어서 가상의테이블을 만든다라고 생각하면 될 것 같다)
        -GROUP BY절을 통해 테이블에 있는 컬럼을 인위적으로 그룹화하여 집계를 할 수 있다
         그래서 COUNT()함수와 같은 것을 집계함수라고 한다 
         (COUNT(컬럼명) : 컬럼안의 데이터를 카운트 즉, 세워주는 함수이다 )

            SELECT 그룹화 할 컬럼들, [집계함수]
            FROM 테이블명
            GROUP BY 그룹화 할 컬럼들

    3) HAVING
        -집계한 데이터에서 원하는 조건만 검색하는 명령어
        -GROUP BY절과 한 쌍이다
        
        -HAVING절은 집계된 데이터를 조회할 때 WHERE절은 집계 전 데이터를 조회할 때
        -HAVING절은 집계함수를 사용한다, WHERE절은 집계함수를 사용하지 않는다

        -HAVING절은 SELECT절의 집계함수를 기준으로 잡고 조건연산을 한다

    4) SQL 명령어 우선순위

        1. FROM     : 불러올 테이블을 지정한다
        2. WHERE    : 지정 테이블에서 조건을 통해 데이터를 가져온다
        3. GROUP BY : 지정한 컬럼을 하나의 그룹으로 묶는다
        4. HAVING   : 집게된 컬럼 데이터를 필터링한다
        5. SELECT   : 조회할 컬럼을 선택한다
        6. DISTINCT : 컬럼에서 중복된 데이터를 제외시킨다
        7. ORDER BY : 지정된 컬럼을 오름차순/내림차순으로 정렬한다
        9. LIMIT    : 지정한 수만큼 조회할 컬럼을 제한한다

728x90