brunch

이제는 마케터 필수템, SQL(2)

feat. GROUP BY , HAVING, ORDER BY

by 브래드

안녕하세요, 브래드입니다.


오늘은 SQL 입문 두 번째 시간으로 GROUP BY, HAVING 및 ORDER BY 구문에 관해 함께 공부해보겠습니다.


해당 구문들을 통해 카테고리별 매출 분석 및 특정 카테고리 매출, 그리고 매출이 높은 순으로 정렬해보는 작업을 진행해볼게요.



GROUP BY 구문

1.JPG 카테고리별 매출 분석하기

카테고리별 매출 분석을 위하여 테이블을 불러오고 SELECT 구문에서 카테고리와 GMV 값을 가져옵니다.


여기서 주의해야 할 점은, 매출을 집계해야 하는 상황이므로 SUM 괄호를 사용하여 GMV 값을 완성해주어야 합니다.


또한, 집계해야 할 사항을 GROUP BY를 사용하여 작성해주어야 합니다. 이때 SELECT 구문에 있는 칼럼들이 앞에서부터 1번이므로 category라고 작성해도 되지만, 1을 입력하여 작성해도 동일한 결과를 보여줍니다.




22.JPG 연도별 카테고리 매출 분석

연도별 카테고리 매출 분석을 한다면, yyyy를 SELECTGROUP BY 구문에 추가해야 합니다.


이때 앞서 진행했던 것처럼 숫자를 활용하여 1,2를 작성해도 무방하며, yyyy와 category를 직접 입력해도 같은 결괏값을 도출함을 알 수 있습니다.


GROUP BY에 어떠한 항목을 작성해야 할지 헷갈린다면, SELECT 절에서 집계 함수를 쓸 경우에는 집계함수 외의 모든 칼럼을 GROUP BY에 한 번 더 써준다고 이해할 수 있습니다.




전체 총계.JPG 전체 총계 구할 때

만약 어떠한 값의 전체 총계를 구하고 싶다면, SELECT 구문에서 SUM을 통해 해당 값을 입력하여 결과 값을 구할 수 있습니다.


다만, 전체 총계를 내야 해서 집계 함수를 바로 쓰는 경우에는 GROUP BY 함수를 사용하면 안 된다는 점을 유의해야 합니다.





HAVING 구문

333.JPG 특정한 매출 값을 넘는 카테고리 항목 구하기

다음으로 HAVING 구문을 함께 사용해볼게요.


예시로, 특정한 매출 값을 넘는 카테고리 항목을 구한다고 가정한다면 이전에 학습했던 내용과 더불어 HAVING 구문을 추가해야 합니다.


HAVING은 '집계 후' 데이터를 필터링하는 것으로 이해할 수 있으며 HAVING 절에는 집계함수만이 올 수 있습니다.


여기서 WHERE과 HAVING이 헷갈릴 수 있는데, WHERE 절에는 집계함수가 올 수 없고 HAVING 절에는 집계함수만이 올 수 있습니다.




444.JPG WHERE과 HAVING 함께 사용

WHERE과 HAVING을 동시에 사용하여 원하는 값을 추출할 수 있습니다.


예를 들어, 2019년 데이터만 보고 싶고 합계 값이 10000을 넘는 데이터를 보고자 한다면 WHERE절에는 연도를 필터링하는 식을, HAVING 절에는 합계 값을 필터링하는 식을 작성해주어야 합니다.





ORDER BY 구문

5555.JPG 매출이 높은 카테고리 순으로 정렬하기

ORDER BY 구문은 우리가 원하는 데이터 값으로 정렬해주는 기능을 수행합니다.


위 예시에서는 카테고리와 합계 항목을 구하고 있는데, ORDER BY 구문을 통해 합계가 큰 순서대로 혹은 작은 순서대로 정렬할 수 있습니다.


디폴트 값은 오름차순이므로, 큰 값부터 보고 싶다면 DESC를 추가로 입력하여 내림차순으로 데이터를 정렬할 수 있습니다.





777.JPG HAVING 추가

HAVING을 추가하여 특정한 값을 넘는 데이터 합계만을 보고 싶다면, GROUP BY 절 아래에 HAVING을 절을 추가해줍니다


HAVING 절은 GROUP BY 절 다음에 온다고 생각하면 됩니다. 또한, ORDER BY는 대부분 마지막 순서에 온다고 인지하면 됩니다.


ORDER BY에서도 컬럼명을 대체하여 숫자를 적어 실행할 수 있음을 알아두면 좋습니다. 추가로 ORDER BY를 실행할 때는 반드시 SELECT 절에 해당 칼럼이 있어야 합니다.




888.JPG DESC 활용

ORDER BY에 두 개 이상의 칼럼이 올 경우, 각각 오름차순 혹은 내림차순으로 설정이 가능하므로 원하는 데이터를 구하는 데 유용하게 활용할 수 있습니다.





지금까지 SQL 학습 두 번째 시간으로 GROUP BY, HAVING, ORDER BY 구문에 관해 함께 알아보았습니다.


기본적인 문법을 함께 체득하여, SQL 기본기를 탄탄히 만들도록 노력해보아요.


브래드였습니다. 감사합니다.

keyword
매거진의 이전글이제는 마케터 필수템, SQL