소셜로그인 중단 안내

계정으로 로그인 기능이 2023년 11월 16일 중단되었습니다.

아이보스 계정이 사라지는 것은 절대 아니며, 계정의 이메일 주소를 이용해 로그인 하실 수 있습니다.

▶️ 자세한 공지사항 확인

2023.03.22 14:14

메이크대쉬

조회수 1,265

댓글 1

지난 ‘SQL 기초편’에서는 왜 마케터 또는 기획자가 SQL을 이용해 직접 데이터를 추출해야 하는지와 기본적인 구문 작성법들에 대해 알아보았어요. 이번 심화편에서는 코드 작성 양식에 해당하는 ‘순서와 들여쓰기’ 그리고 SQL 문법인 ‘Join’과 ‘Subquery’ 에 대해 이야기 해볼게요.

 

 

‘순서와 들여쓰기’가 뭐고 왜 고려해야하죠?

 

○ ‘순서와 들여쓰기(Indentation)’ 란? :

  • 가독성과 유지보수성을 높이기 위한 범용적 규칙이에요.

     1. 가독성

       a. 순서를 정하면, 코드의 흐름을 파악하기 쉬워요.

       b. 들여쓰기를 사용하면, 각 줄을 구분하여 코드를 보기 쉬워요.

    2. 유지보수

       a. 복잡하고 가독성이 낮으면, 수정이 어렵고 실수할 가능성이 높아요.

       b. 순서와 들여쓰기를 사용하면, 수정이 필요한 부분을 빠르게 파악하여 관리가 용이해요.

 

 

왜 ‘JOIN’과 ‘Subquery’ 기능을 사용해야하나요?

 

○ ‘JOIN’ 이란? :

  • 서로 다른 테이블을 하나의 Key 값으로 통합하는 문법이에요.

    1. 데이터를 붙여서 추출

      · 고객 정보가 저장된 customers 테이블과 주문 정보가 저장된 orders 테이블을 JOIN으로 연결하면 고객이 어떤 제품을 주문했는지 알아낼 수 있어요.

    2. 효율적인 데이터 조회

      · 하나의 테이블에서 데이터를 검색하면 속도가 느려질 수 있어요. 여러 테이블을 JOIN 을 통해 수행하면 속도가 향상돼요.

 

 

‘Subquery’ 란?

 

○ 다른 쿼리 내부에 포함되어 있는 SELECT 문장

    1. 중첩되는 쿼리 수행

      · 한 테이블에서 두 개의 열에 대한 값을 비교할 때 사용해요.

    2. 조건에 맞게 필터링하여 조회

      · 특정 조건을 만족하는 데이터를 조회할 때 사용해요.

 

 

 

이제 간단한 거래데이터에서 원하는 정보를 추출하는 작업을 통해 직접 확인해볼게요.

쿼리에 따른 결과를 제공하니, 어떤 값이 출력되는지 비교해보며 파악해 보세요!

 

[고객 데이터세트 예시 - Table 이름]: customers

 id
name
 1
리아
2
제이슨
3
클레어


[주문 데이터세트 예시 - Table 이름]: orders


id
customer_id
order_date
112022-01-01
232022-01-02
312022-01-03

 

 

1. 순서 & 들여쓰기

 

1-1. 순서

○ SQL 문법들을 사용하는 순서는 다음과 같습니다.

    1. SELECT: 가져올 열(column) 선택

    2. FROM: 데이터를 가져올 테이블(table) 선택

    3. JOIN : 결합할 테이블(table) 선택

    4. WHERE: 가져올 데이터를 제한하는 조건(condition) 지정

    5. GROUP BY: 결과를 그룹화하는 방법 지정

    6. HAVING: 그룹화된 데이터에 대한 조건 지정

    7. ORDER BY: 결과를 정렬하는 방법 지정

    8. LIMIT : 출력할 행을 지정. 

 

 

1-2. 들여쓰기 (Indentation)

○ 한번의 탭(tab) 또는 스페이스(space)를 4번 입력해 글자 간 간격을 확보해 주세요.

  • 가독성있는 코드로 변환하고 싶다면 “SQL Formatter” 사용을 권장해요.

      · 링크 : https://www.dpriver.com/pp/sqlformat.htm

 

일관성 있게 ‘순서와 들여쓰기’를 적용한 SQL 쿼리문 예시입니다.


 

 

2. JOIN

위의 예시에서 JOIN 기능이 들어가 있는 것을 볼 수 있어요. JOIN 은 ‘두개의 테이블을 연결해 데이터 추출이 필요한 경우’에 사용하고 아래와 같은 구조를 가져요.

 

2-1. JOIN 

○ JOIN 에는 다양한 종류가 있지만 일반적인 4가지는 유형은 다음과 같아요.

    1. INNER JOIN: 두 테이블에서 일치하는 열 값을 기준으로 행 결합

    2. LEFT JOIN: 왼쪽 테이블의 모든 행 / 오른쪽 테이블에서 일치하는 행 결합

    3. RIGHT JOIN: 오른쪽 테이블의 모든 행 / 왼쪽 테이블에서 일치하는 행 결합

    4. FULL OUTER JOIN: 두 테이블의 모든 행 결합

 

 


 

이번에는 주로 사용되는 INNER JOIN과 LEFT JOIN을 소개해 드릴게요. (*RIGHT 와는 순서만 달라져요.)

 

 

2-2. LEFT JOIN

○ LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 데이터를 가져와요.

  • customers 테이블의 id 열과 orders 테이블의 customer_id 열을 기준으로 LEFT JOIN을 수행합니다.

      · 참고 : customers 테이블에는 모든 고객 정보가 포함되어 있지만, orders 테이블에는 주문하지 않은 일부 고객이 있을 수 있어요.


name
id
order_date
리아
12022-01-01
리아
32022-01-01
제이슨
NULL
2022-01-03
클레어
22022-01-02

 

 

2-3. INNER JOIN

INNER JOIN은 두 테이블에서 일치하는 데이터만 가져와요.

 

○ customers 테이블의 id 열과 orders 테이블의 customer_id 열을 기준으로 INNER JOIN을 수행합니다.

 

name
id
order_date
리아
12022-01-01
리아
32022-01-03
클레어
22022-01-02

 

 

3. Sub Query

 

서브쿼리는 하위 쿼리를 실행한 테이블을 추출하여, 상위 쿼리에서 사용하는 방법이에요.

○ 하나의 SELECT 문장 내에 포함된 또 하나의 SELECT 문장이 있는 쿼리문으로 이해하면 좋아요!

○ 고객명과 해당 고객의 총 주문 수를 검색하는 상황을 가정하고 다음과 같은 SQL 쿼리를 작성해보았어요.

  • customers 테이블과 orders 테이블을 결합한 총 주문 수 계산.

 

name
total_orders
리아
1
제이슨
1
클레어
1

 

 

정리하기

 

○ SQL 기초편, 심화편에 있는 문법들 만으로 우리 비즈니스의 기본적인 데이터들을 모두 추출할 수 있어요.

○ 기초적인 지표들 외에도 LTV / Retention / Cohort와 같은 고도화된 지표들도 추적하여 개선한다면, 비즈니스 성장은 자연스럽게 따라와요.

 

글: 김재욱, 여훈기

목록
댓글 1
댓글 새로고침

cookiman

04. 036232

인서울러

04. 017550

피처링co

03. 303,82610

김미피

03. 288310

마스크민케터

03. 275,45420

로스단

03. 251,0860

아렛스

03. 231,1720

큐레터

03. 2310,91032

메이크대쉬

03. 221,2664

정다니

03. 205030

밥뭐먹지

03. 2021,31212

밥뭐먹지

03. 173,57825

하엘

03. 173,8590

ddkd

03. 167970

jujus67

03. 169700

큐레터

03. 1619,90056

위픽코퍼레이션

03. 154330

toyst916

03. 158800

숲속한접시

03. 141,3430

허허허허헉

03. 146190
목록
로그인 후 더욱 많은 기능을 이용하세요!아이보스 로그인