데이터베이스에는 여러 테이블이 존재할 수 있다.
지금까지는 하나의 테이블 안에서 데이터를 추출해왔다면,
이제는 여러 테이블을 연결하고 조합하여 데이터를 추출해볼 수 있게 되었다.
똑같이 생긴 데이터를 위-아래로 연결하기
조건) 데이터의 형식이 완전 동일할 때 가능
* UNION_ALL은 중복 데이터 포함 모두를 가져오며, UNION은 중복 데이터는 제외하고 가져오게 된다.
연관성 있는 데이터를 옆으로 이어 붙여 연결하기
조건) 같은 값이 들어있는 컬럼이 있을 경우 가능
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을 곱해서 방향을 바꾼다.
즉, 합산 결과가 음수라면 그걸 양수로 뒤집는다.
"전체적으로 손해가 많으면 그걸 +로 바꿔서 표현하자. (실질 수익 방향 유지)"
실무에서는 아래와 같이 사용하면 좋을 것 같다)
(본 내용은 데이터리안 ‘SQL 데이터 분석 캠프 입문반’을 수강하며 작성한 내용입니다.)
회고하는 방법, JOIN 심화, 날짜 조건 함수 정리 (0) | 2025.05.01 |
---|---|
SQL로 표현하는 피봇테이블 (0) | 2025.04.26 |
RFM 고객 세분화 분석, EDA(탐색적 데이터 분석) (0) | 2025.04.21 |
조건문 정리 (CASE, IF) (0) | 2025.04.21 |
SQL 데이터 요약,필터링 정리 (GROUP BY, HAVING, ORDER BY) (0) | 2025.04.21 |