본문 바로가기

💻 SQL/🔎기초 SQL

[칼퇴족 김대리는 알고 나만 모르는 SQL 기초편] DAY 9. 데이터의 그룹화, 필터링

DAY 9. 데이터의 그룹화, 필터링

  • 데이터를 요약 및 분석하여 집단간 차이에 대해서 알아보는 경우가 많다

💡 데이터의 그룹화 (GROUP BY)

  • 그룹화하면 데이터를 논리적 집합으로 나누어서 데이터의 특성을 요약할 수 있다, 즉 집단 간 차이를 좀 더 자세하게 볼 수 있다
  • 열 이름으로 그룹화
    • 집계함수를 제외한 SELECT문의 모든 열은 GROUP BY 절에 있어야 한다
    SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수 FROM 테이블 명 WHERE 조건절 GROUP BY 열이름1, 열이름2; 
  • 열 위치로 그룹화
    • ORDER BY절이 열 위치를 지정해서 정렬했던 것과 같이 GROUP BY 절도 열 위치를 지정해서 그룹화 할 수 있다
    SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수 FROM 테이블 명 WHERE 조건절 GROUP BY 1,2; 
    ※ GROUP BY절은 WHERE조건절 뒤에 위치하고, ORDER BY절 앞에 위치한다. (ORDER BY절은 항상 문장의 마지막에 위치)
  • ※ 그룹화 된 열에 NULL값을 포함 한 경우, NULL값도 그룹화된다. NULL값을 여러개 포함하고 있을 경우 하나의 NULL값으로 그룹화된다

💡 그룹화된 데이터의 필터링 (HAVING)

  • HAVING은 WHERE조건절과 마찬가지로 조건을 주는 역할을 한다, 차이는 HAVING은 그룹화된 변수에 대해 조건을 준다
  • 특정한 테이블에서 특정한 조건을 만족하는 데이터를 추출한 후, 특정한 조건을 만족한 그룹화 된 특정 열 및 집계함수를 나타내라
SELECT 그룹화할 열 이름1, 집계 함수 FROM 테이블 명 WHERE 조건절 (개별 행에 대한 필터링) GROUP BY 열이름1 HAVING 집계함수 조건 (그룹화된 변수에 대한 필터링); 

※ HAVING절은 GROUP BY조건절 뒤에 위치하고, ORDER BY절 앞에 위치한다. (ORDER BY절은 항상 문장의 마지막에 위치)

※ WHERE조건절의 조건은 데이터가 그룹화되기 전에 필터링 하고, HAVING절의 조건은 데이터가 그룹화된 후에 필터링한다.
→ WHERE 조건절에 의해 제외된 행은 그룹화 할때도 제외되기 때문에, HAVING절의 고려대상이 아니다. 즉 WHERE조건절에 의해 1차 필터링된 대상을 그룹화하여 HAVING절이 2차 필터한다

 

💡 실습에서 언급된 주요 개념

  • 회계학(Accounting)의 대차대조표(B/S : Balance Sheet)는 일정 시점에서 기업의 재정 상태를 나타낸 표로, 크게 자산, 부채, 자본 항목으로 나뉜다. 기업이 미래의 경제적 효용을 제공할 때 이것을 자산이라고 부른다.
  • 자산 구입은 크게 두가지 방법이있다. 첫 번째는 남에게 빌려서 자산을 구입하는 것이고, 두 번째는 자기 돈으로 자산을 구입하는 것이다. 남에게 빌려서 자산을 구입하는 것은 부채이고, 자기 돈으로 자산을 구입하는 것은 자본이라고 한다. 금융기관에서 자산은 여신, 즉 대출해준 돈이고 부채는 수신, 즉 고객들이 예치해둔 돈이다.