top

상세 컨텐츠

본문 제목

데이터 연결하기

기획/데이터 분석

by PO/PM-Sky 2025. 4. 28. 13:40

본문

 

thumbnail

 

데이터베이스에는 여러 테이블이 존재할 수 있다.

지금까지는 하나의 테이블 안에서 데이터를 추출해왔다면,

이제는 여러 테이블을 연결하고 조합하여 데이터를 추출해볼 수 있게 되었다.

 

1. UNION ALL, UNION :

똑같이 생긴 데이터를 위-아래로 연결하기

조건) 데이터의 형식이 완전 동일할 때 가능

* UNION_ALL은 중복 데이터 포함 모두를 가져오며, UNION은 중복 데이터는 제외하고 가져오게 된다.

 

 

 

2. INNER JOIN :

연관성 있는 데이터를 옆으로 이어 붙여 연결하기

조건) 같은 값이 들어있는 컬럼이 있을 경우 가능

 

 

 

  • JOIN은 종류가 여러개 있는데, 그 중 비교적 단순한 INNER JOIN에 대해 배웠다.
  • INNER JOIN의 아주 기본적인 조건이라 INNER를 안붙여도 된다
  • 두개 이상의 테이블을 사용할 때는 컬럼명 앞에 테이블명을 꼭 붙여주도록 한다. (orders.user_id 같이..)

 

JOIN 에 개념에 대해 헷갈려하는 사람들이 많아 시각화로 볼 수 있는 사이트까지 생겼다.

시각적으로 이해하고 싶다면 아래 사이트에서 확인해보는 걸 추천한다.

https://sql-joins.leopard.in.ua/

 

SQL Joins Visualizer

Please select how do you want to do SQL JOIN between two table Copy SQL

sql-joins.leopard.in.ua

 

 

 

+++)

연습중 총 환불 금액의 합계를 도출해야 하는 문제가 있었다.

내가 푼 쿼리는 절댓값을 활용해 풀었는데, 다른 방식으로 답변을 알게 되어 정리한다.

내가 푼 쿼리
SELECT SUM(ABS(oi.price * oi.quantity))

알게된 실전 쿼리
SELECT -SUM(oi.price * oi.quantity)

 

✅ 둘 다 "양수 결과"를 만들려고 하는 건 맞다. 하지만 목적에 따라 다르게 사용될 수 있는데,
항목별 절댓값이 중요한 경우는 SUM(ABS(...)),
최종 합계만 뒤집으면 되는 경우는 -SUM(...)이 효율적이다.

 

 

ABS()

: 개별 곱셈 결과(각 주문 건)를 절댓값으로 만든 뒤 합산한다.
즉, 모든 곱셈 결과를 양수로 바꾼 후 합산한다.

"각 거래가 이익이든 손해든 무조건 +로 보고 그냥 다 더하자!"

 

-SUM()

: 전체 합산 결과에 -1을 곱해서 방향을 바꾼다.
즉, 합산 결과가 음수라면 그걸 양수로 뒤집는다.

"전체적으로 손해가 많으면 그걸 +로 바꿔서 표현하자. (실질 수익 방향 유지)"

 

 

실무에서는 아래와 같이 사용하면 좋을 것 같다)

  • 판매 수량이나 건수를 합산할 때는 → SUM(ABS(...)) 사용
    → 거래마다 양수/음수 혼재할 수 있는데 그냥 절댓값 처리

  • 수익/손실을 합산해서 총합만 필요할 때는 → -SUM(...) 사용
    → 매출총합(Gross Sales), 손익분기(P&L) 계산할 때

 

 

(본 내용은 데이터리안 ‘SQL 데이터 분석 캠프 입문반’을 수강하며 작성한 내용입니다.)

관련글 더보기