벌써 2022년도 한달도 안남게 되었다. 남은 한달도 알차게 보내 2022년을 잘 마무리 해야겠다.
12/2 금요일🙄 오늘은 5시간 잤나.. 밀린 강의들을 쭉 듣고 레포트도 2개 작성하였다
시험에 공부에 오늘은 SQL Study까지 죽어나간다 정말😭
매주 일요일 진행하는 SQL study를 위해 정말 오랜만에 SQL문을 다시 공부하였다!
(SQLD 따고 한번도 안했더니.. 1년 반이 지난 듯 하다.)
SQL Study를 하는 목적은 데이터 분석을 하기 위해선 대용량 데이터(DB)를 당연히 다룰줄 알아야 하고 이를 위해 SQL 숙련도 그리고 면접 대비를 위해서다.
SQLD 자격증을 준비하면서도 쿼리를 직접적으로 짜 본 경우는 그동안 없었기에 SELECT(조회), CREATE(생성), UPDATE(갱신), DELETE(삭제) 등 완전 기초적인 것부터 다시 공부하였다.
SQL 기초 정리? 쿼리를 정리한 파트는 아래 블로그를 통해 다시 떠올렸다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=baek2sm&logNo=221578169366
작성해주신 분 감사드립니다👍
추가로 프로그래머스 MySQL 문제를 풀다가 TABLE 간 JOIN 문제가 나와 아래 블로그 글을 통해 JOIN을 정리할 수 있었다.
https://lcs1245.tistory.com/entry/SQL-JOIN-INNER-JOIN-OUTER-JOIN-LEFT-JOIN-RIGHT-JOIN-SELF-JOIN
작성해주신 분 감사드립니다👍
SQL의 문제 설명의 경우 표로 되어있기 때문에 캡쳐를 활용할 계획이다.
SELECT FIRST_HALF.FLAVOR
FROM FIRST_HALF
LEFT JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
WHERE FIRST_HALF.TOTAL_ORDER > 3000
AND ICECREAM_INFO.INGREDIENT_TYPE = 'fruit_based'
ORDER BY FIRST_HALF.TOTAL_ORDER DESC
< 풀이 과정 >
우선 ICECREAM_INFO 테이블의 FLAVOR 컬럼이 FIRST_HALF 테이블의 FLAVOR의 외래 키라 했으므로 테이블 관계가 FIRST_HALF가 더 큰 범주임을 알 수 있다.
처음 풀어보는 SQL 문제라서.. 미숙한 부분이 굉장히 많을 것 같다. 특히 테이블명.컬럼명 으로 지속적으로 작성해야하는 것이 불편하다 좀.. 파이썬처럼 as 같은 게 분명히 SQL에도 있을텐데..
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID
< 풀이 과정 >
문제를 보자마자 크롬에 "SQL 테이블 정렬 2번"을 검색하여 아래 글을 통해 문제를 해결할 수 있었다. https://dar0m.tistory.com/60
주어진 문제 그대로 총 주문량 기준 내림차순, 총 주문량 동일 시 출하 번호 오름차순 정렬
위 코드처럼 ORDER BY A DESC, B 인 경우, A 기준 내림차순 정렬 A 값 동일 시 B 기준 오름차순 정렬을 의미한다!
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') as HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME
날짜 형태만 잘 변경해주면 어렵지 않았던 문제
DATE_FORMAT(컬럼명, '원하는 날짜 형태') as 부를 컬럼 변수명 으로 처리하였다.
아 참고로, 추가적인 날짜 포맷 형태는 다음과 같다.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE <= 12 AND GEND_CD = 'W' ORDER BY AGE DESC, PT_NAME
< 풀이 과정 >
전화번호 컬럼의 데이터가 비어있는 경우 NONE으로 출력 따라서 IFNULL()을 이용하여 TLNO 컬럼을 처리하였다.
- 기초적인 SQL 쿼리 문법을 공부하고 문제를 푸는데는 그렇게 어려운 부분은 없었다. 다만 풀이 방법이 여러가지 일 것 같은? 그런 느낌들을 많이 받았다.
- 문제를 이해한 후 크롬에 SQL JOIN 이런식으로 검색해가면서 문제를 풀었더니 크게 어려운 부분은 없었다!
- 확실히 Python 코딩테스트에 비해 다른 점은, 레벨이 높다고 해서 문제 구현이 어려운 문제는 아니고 "함수를 얼마나 많이 아는가"가 가장 중요한 핵심인 것 같다
스터디 따라와줘서 고마워 태준 ! 화이팅해봅시다