[데이터 분석 부트캠프] SQL 코딩테스트 준비
2023. 8. 8. 18:30ㆍIT 라이프/패캠 데이터분석 부트캠프 9기
반응형
1. 반복적으로 놓치는 부분 (주의)
⌘ 문제 잘 읽기
- 출력 부분을 문제의 요구사항대로 넣지 않고 뭐 하나를 빠뜨린다든지, 모든 카테고리가 아니라 지정된 3개 카테고리에 대한 값만 출력하는 부분을 놓친 채 쿼리문을 작성했음
2. JOIN도 결과가 나온다고 아무렇게나 연결하면 안되는 것 같음
⌘ 문제 16번
- 제시된 쿼리문과 내가 작성한 쿼리문의 결과값이 달라서 차이를 확인하려고 혼자 좀 파봤다
# 제시된 쿼리문
SELECT
CONCAT(CI.city, ', ', CO.country) AS 'Store',
ST.store_id AS 'Store ID',
SUM(PA.amount) AS 'Total Sales'
FROM payment PA
JOIN rental RE ON RE.rental_id = PA.rental_id
JOIN inventory INV ON INV.inventory_id = RE.inventory_id
JOIN store ST ON ST.store_id = INV.store_id
JOIN address AD ON AD.address_id = ST.address_id
JOIN city CI ON CI.city_id = AD.city_id
JOIN country CO ON CO.country_id = CI.country_id;
GROUP BY ST.store_id
# 내가 작성한 쿼리문
SELECT CONCAT(CI.city, ',',CO.country) AS Store, ST.store_id AS Store_ID, SUM(PA.amount) AS Total_Sales
FROM store ST
JOIN address AD
ON ST.address_id = AD.address_id
JOIN city CI
ON CI.city_id = AD.city_id
JOIN country CO
ON CO.country_id = CI.country_id
JOIN customer CU
ON CU.store_id = ST.store_id
JOIN payment PA
ON PA.customer_id = CU.customer_id; -- 이 부분말고 rental_id, inventory_id 등을 쓰면 값이 달라짐
GROUP BY ST.store_id;
서로 다른 부분 찾기
- 양쪽에서 SELECT *로 다 바꾸고, GROUP BY 라인을 삭제하여 JOIN된 상태의 전체 테이블 출력 → CSV 파일로 EXPORT → 피벗테이블로 store_id별 amount값의 갯수를 비교함
- amount가 1.98인 게 1개 뿐이었고, 양쪽 테이블에서 각각 2, 1번 store_id에 매핑되는 차이가 있음을 발견함
- 아래의 과정을 통하면 1.98짜리는 store_id가 1번이어야 함
- payment 테이블에서 amount가 1.98인 라인 전체 출력한 결과, 아래 캡쳐 화면처럼 레코드는 1개였고, customer_id가 107임을 알 수 있음
SELECT *
FROM payment
WHERE amount = 1.98; -- 1개

- customer_id가 107인 고객이 이용하는 store는 customer 테이블에서 확인가능하며, 아래 캡쳐 화면처럼 store_id가 1인걸 볼 수 있음
SELECT *
FROM customer
WHERE customer_id = 107;

- 그럼 결과적으로 제시된 쿼리문이 틀린 것인데, 너무 많은 테이블을 조인해서 무엇이 잘못 연결된 탓인지까진 모르겠지만, 테이블간 조인 조건으로 써도 되는 것처럼 보이지만 사실은 부적합한 것이 있는 것인지 모르겠다. 암튼, 값이 나온다고 다 맞는게 아니라니...SQL은 파이썬처럼 인터프리터로 한줄 한줄 결과를 확인할 수 있는게 아니라(뭐 하고자 하면 하겠지만 테이블을 눈빠지게 매 번 보면서 확인하긴 좀...) 어떤 면에서는 더 결과가 확실히 맞는지 불안한 것 같다. 최대한 테이블의 각 컬럼이 무엇을 의미하는지를 파악하는 게 이런 불상사를 피해가는 지름길이 아닐까 싶기도.
728x90
반응형
'IT 라이프 > 패캠 데이터분석 부트캠프 9기' 카테고리의 다른 글
| 설득력 있는 의사결정을 위한 데이터 시각화 Tool Tableau (1) (0) | 2023.08.24 |
|---|---|
| [mySql 프로젝트] Olist 데이터를 활용한 데이터 분석 (0) | 2023.08.23 |
| [데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (7) (0) | 2023.08.04 |
| [데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (6) (0) | 2023.08.03 |
| [데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (5)-postgreSql (0) | 2023.08.02 |