Development Study/Backend

[SQL] 데이터분석의 꽃, GROUP BY(~HAVING, DESC)

  • -
728x90

책표지 아닙니다

정말 핵심적인 문법이다

꽃이라고 불릴 만큼 중요하게 보는 부분이 바로 이 GROUP BY이지만

위에 보이는 것처럼 예쁜 꽃이 될 수도, 예쁘지만 가시가 달린 장미가 될 수도 있다

 

그만큼 중요하고, 처음 잘못 익혀두면 오래 고생할 문법이니 잘 익혀두도록 하자

 

 

지난 이야기
 

[SQL] 저장된 데이터를 원하는 대로 찾아보자 ( SELECT ~ 집계 함수 )

들어가기에 앞서 SQL문은 기본적인 문법, 실습 위주의 학습을 통해 빠르게 익힐 수 있다 꾸준하고 반복적인 학습을 하면 실력이 빠르게, 좋은 방향으로 늘어날 것이라 생각한다 SQL문 관련 기능/

time-map-installer.tistory.com


이번 글의 최종적인 구조 미리 보기

순서 틀리면 큰일난다

SELECT 
FROM

WHERE

GROUP BY

HAVING;

DESC(개별 작동)

 

그래서 작성자는

SF WGHD = SF영화 WarGraymonHD(워 그레이몬 HD)

라고 외웠다

참고로 디지몬 팬은 아니다

SF WGHD

(광고 아님, 사진 출처용) 구매를 원한다면 이쪽으로 가면 된다

 

Figure-rise Standard 워 그레이몬 플라모델 『디지몬 어드벤쳐 [BANDAI SPIRITS]발매필・재고품

중고,피규어,식완,건담,원피스,리멘트,섹시피규어,피규어,일본직구,닥터시라보,시세이도,오로나인,페어아크네,구매대행,한정판,일본문구,펜,무코타,소니,플스,게임,미연시,프라모델

japanstore.kr


GROUP BY - 구조

SELECT custId, sum(saleprice), count(*)

FROM Orders

GROUP BY custId;

 

위 SQL문을 해석해보자면

(FROM) Orders 테이블에서

(SELECT) custId를 선택하고, saleprice의 합계를 구하고, 전체를 count 하는데,

(GROUP BY) custId를 기준으로 그룹을 지으며 위 작업을 진행하라

라는 의미로 볼 수 있다

 

※주의※ GROUP BY로 선택한 칼럼을 제외한 나머지 칼럼들에 대해서 SELECT 할 때 집계 함수를 써야만 돌아간다

집계 함수란?

더보기

MAX, COUNT, MIN, SUM 등등

데이터를 모아서 그 결과를 내는 함수

 

SF WGHD에서 이 순서대로 들어가 있다는 것을 알 수 있다


어? 왜 집계 함수에는 조건문이 붙지 않지??

(어? 금지이지만 이론을 설명하는 자리이므로 넘어가도록 하겠다) 

HAVING - 구조

SELECT custId, sum(saleprice), count(*)

FROM Orders

WHERE saleprice >= 8000

GROUP BY custId

HAVING COUNT(*) >= 2;

 

이때를 위해 준비된 HAVING이라는 함수

집계함수에 조건문을 붙일 수 있는 기능을 가지고 있어

보다 세밀한 데이터 필터링이 가능하다

 

만약 에러가 났다면?

SELECT 해주지 않은 항목에 대해 GROUP BY를 해도 큰일 나고

GROUP BY 뒤에 쓰여있지 않은 다른 모든 함수에 집계 함수를 써주지 않아도 큰일 난다

HAVING의 위치는 SQL문 제일 아래쪽에 써야 한다

그리고 WHERE에 쓰지 못했던 집계 함수를 마음껏 써주면 된다

그렇지 않으면.. 왜 에러가 나오는지도 모르는 무한한 고통을 겪을 수 있으니 주의하자

 

이유를 찾지 못하는 에러의 계단


DESC - 구조

DESC = 역순 정렬(내림차순)?

사실 맞는 말이지만 여기서 다룰 내용은 조금 다르다

ORDER BY 뒤에 오름차순/내림차순을 결정할 때 쓰이는 함수가 아닌

테이블 데이터의 형태를 파악하는 기능의 절이다

이 TABLE에는 무엇이 있을까..

 

직접 한 번 해보도록 하겠다

DESC Book;

 

위와 같이 단일 절로 쓰이며 아래와 같은 결과가 나온다

 

Book테이블의 기본적인 정보가 출력되는 모습을 볼 수 있다


실습을 통해 실력을 더 늘려보고 싶다면?
↓    ↓   
 

[SQL] 연습 문제 ( GROUP BY ~ CREATE )

이전 글 연계 [SQL] 데이터분석의 꽃, GROUP BY(~HAVING, DESC) 정말 핵심적인 문법이다 꽃이라고 불릴 만큼 중요하게 보는 부분이 바로 이 GROUP BY이지만 위에 보이는 것처럼 예쁜 꽃이 될 수도, 예쁘지만

time-map-installer.tistory.com


다음 포스팅으로 가고 싶다면?
↓    ↓    
 

[SQL] 데이터분석의 농경지, CREATE TABLE

그동안 우리는 만들어져있는 데이터베이스를 통해 데이터를 찾고, 분류하는 활동들을 해 왔다 이번에는 우리가 그 많은 데이터를 이용해 검색을 할 수 있었던 근본, TABLE을 생성/삭제하는 방법

time-map-installer.tistory.com

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.