2024-05-14

강대·2024년 5월 14일
post-thumbnail

안녕하세요
어제 인후염이 심하게 재발해서
병원갔다와서 무호흡 수면하고
오늘자 공부 시작한 강대입니다 ..

다행히 주사 맞고 약 쎈 걸로 받아오고
가습기도 켜주니 한결 나아졌습니다 !!!


벌써 부트캠프 시작한지 한 달이 돼가네요 !!!!!
이게 제일 신기하네요 ㅎㅎ
오늘도 라쓰꼬 💨💨💨💨






♾️ SQL 코드카타 복습


🖌️ 71번 문제 - 오프라인/온라인 판매 데이터 통합하기

ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매일, 상품ID, 유저ID, 판매량을 출력해주세요.
OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요.
결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.


두 개의 테이블 속 컬럼은 공통으로
상품 판매 ID, 상품 ID, 판매량, 판매일 이렇게 4개 있지만
온라인 테이블만 회원 ID라는 컬럼이 추가되어 5개의 컬럼으로 구성되어 있습니다

컬럼 먼저 정리를 해볼게요 !!!

<
온라인 상품 판매 정보 - ONLINE_SALE
ONLINE_SALE_ID  |  USER_ID  |  PRODUCT_ID |  SALES_AMOUNT  | SALES_DATE
온라인 상품 판매 ID |  회원 ID   |   상품 ID    |     판매량       |   판매일
<
오프라인 상품 판매 정보 - OFFLINE_SALE
OFFLINE_SALE_ID   |  PRODUCT_ID  |  SALES_AMOUNT |  SALES_DATE
오프라인 상품 판매 ID  |   상품 ID    |      판매량     |    판매일

온라인은 회원 id가 따로 있는 걸 확인할 수 있고
이를 제외하곤 둘이 거의 똑같은 데이터 형태라고 볼 수 있네요 !!

SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
이렇게 출력해달라고 했는데
오프라인 테이블에는 유저 아이디가 없기 때문에 NULL로 출력해줍니다 !



SELECT DATE_FORMAT(O.SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
       >> 날짜 형식 편집 / 판매일 조회
       O.PRODUCT_ID, >> 상품 ID 조회
       IFNULL(O.USER_ID, NULL) AS USER_ID, >> 유저 ID 조회
       O.SALES_AMOUNT >> 판매량 조회
FROM
(
SELECT SALES_DATE,
       PRODUCT_ID,
       USER_ID,
       SALES_AMOUNT
FROM ONLINE_SALE >> 테이블 1 불러오기
UNION ALL
SELECT SALES_DATE,
       PRODUCT_ID,
       NULL, >> 유저 id null값으로 처리
       SALES_AMOUNT
FROM OFFLINE_SALE >> 테이블 2 불러오기
) AS O >> 두 개의 테이블 합친 후 별칭 생성
WHERE SALES_DATE LIKE '2022-03%' >> 2022년 3월에만 해당하는 데이터 찾기
ORDER BY 1, 2, 3 >> 판매일 기준, 상품 ID 기준, 유저 ID 기준 정렬



테이블이 2개라 join을 해주는데
그동안 해왔던 left나 inner join이 아닌
union all을 써줬어요 !!!

여러 데이터를 합쳐야할 때 !
중복값이라도 상관없으니 그냥 union이 아닌 union all로 써줬습니다

사실 그동안 코드카타 풀이하는동안
유니온으로 풀 수 있는 게 많았지만 제가 모르쇠하고 다르게 풀었었는데요 ,,,
막상 유니온을 마주치니 별 건 아니네요 ㅋ
라고 한 시간 이상 붙잡음


union 관련 참고한 블로그는
https://silverji.tistory.com/49





♾️ 데이터 전처리 & 시각화 강의

이건 제가 맨 처음에 만든 데이터프레임인데요 !

name, age, gender 컬럼을 .columns를 이용해서
제멋대로 바꿔보았습니다 😛

그리고 rename을 이용해서
컬럼 하나의 이름을 다른 이름으로 또 바꿔 보았구요

데이터 프레임 속 .loc를 사용해서
사이즈 라는 컬럼의 값이 4 이상인 경우만 추출하되,
대괄호 속 또 대괄호로 감싸줘서 불러올 컬럼을 사이즈, 팁만 불러오는 것도 가능하네요 !!!!

또한 변수 안에 조건을 담아주고
두 조건을 합친 값도 불러올 수 있답니다 !!!







오늘도 나름 이해해보려고 노력해본 하루였습니다 !!
학습 속도가 더딘 것 같긴 하지만
느리면 느린대로 ,,, 꺾여도 그냥 하는 마음이 중요하죠 뭐 ^~^
내일 쉬고 모레 뵙겠습니다 🤗

profile
걍 달려

0개의 댓글