2024/12/13 15

[241213] WIL

SQL 블로그 정리는 주말내로 마무리가 될 것 같다. 정리를 끝맞치면 다시 SQL 코드카타를 계속 풀어나가고 푼 것을 TIL 작성 시간에 정리하는 시간을 가져야겠다. 다음 주 부터는 파이썬을 블로그에 정리하게 될텐데 SQL처럼 처음부터 끝까지 다하는 것보다는 현재 수준에서 어려웠던 것들이나 내 생각하기에 괜찮은 아이디어로 푼 것들, 혹은 내가 생각하지 못한 아이디어로 푼 코드들에 한에서 정리해야겠다.  데이터 문해력, 데이터 리터러시, 파이썬 종합반을 완독, 완강했다. 다음 주에는 지금 하고 있는 어쩌다 데이터 분석을 마무리할 것 같다. 주말내로도 시간을 좀 낸다면 할 수 있을 것 같다. 그러면 코드카타에 좀 더 집중할 시간이 생길 것 같긴한데 너무 코딩테스트에만 집중하진 않으려고 한다. 단기간에 막 실..

TIL 2024.12.13

[241213] TIL

오늘 QCC 본거 정리하자. 일단 둘 다 패스했다. 2번 문제를 3가지 방식으로 풀었는데 한 가지 더 추가해서 4가지로 풀어보고 서브상관쿼리와 윈도우함수에 대해 복습하는 시간을 갖자.  문제: 각 대륙에서 인구가 가장 많은 도시를 조사해야한다. 도시 이름, 국가 이름, 대륙, 도시 인구수를 출력하자 단계별 풀이 1. 두 테이블을 조인해주자. city.countrycode와 country.code를 연결하고 대륙별로 group by 한 후 city의 인구 수 중 가장 큰 애들만 가져오자. 2. 이를 하나의 테이블로 보고 조인으로 먼저 풀어보자해당 테이블을 sub으로 city와 country가 합쳐진 테이블에 country.continent 를 기준으로 JOIN해주자 다음 조건절로 마무리 (sub max(c..

TIL 2024.12.13

그룹별 조건에 맞는 식당 목록 출력하기

[문제] MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 우선 리뷰 MEMBER_ID 로 GROUP BY 해서 REVIEW 의 갯수를 구한다. 정렬하고 1행만 남겨둔다2. 해당 쿼리를 서브쿼리로 보내고3. 멤버테이블과 리뷰테이블을 MEMBER_ID로 JOIN4. 이름과 리뷰텍스트, 작성일을 조회한다5. 아까 보낸 서브쿼리서 MEMBER_ID를 가져와 같은 것들만 필터링6. 정렬[정답]SELECT M.MEMBER_NAME..

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

[문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요. [단계별 풀이] 1. 우선 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회인 자동차들을 필터링 하기 위해 서브쿼리 작성2. 해당 서브쿼리에 속하면서 다시 START_DATE가 8~10월 사이인 CAR_ID만 필터링3. M..

저자 별 카테고리 별 매출액 집계하기

[문제] 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. [단계별 풀이] 1. 2022년 1월인 행들만 필터링2. 저자ID, 저자명, 카테고리 별로 GROUP BY 3. 매출액(판매량 * 판매가)를 SUM 4. 저자 ID 오름차순 정렬, 카테고리 내림순 정렬[정답]SELECT A.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, S..

주문량이 많은 아이스크림 조회하기

[문제] 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1.두 테이블을 FLAVOR 기준으로 JOIN2. FLAVOR 별 주문량 합계를 구한 뒤 내림차순 정렬3. 3개 행만 출[정답]SELECT F.FLAVORFROM FIRST_HALF FJOIN JULY J ON F.FLAVOR = J.FLAVORGROUP BY F.FLAVORORDER BY SUM(F.TOTAL_ORDER + J.TOTAL_ORDER) DESCLIMIT 3

조회수가 가장 많은 중고거래 게시판의 첨부파일 조사하기

[문제] USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다. [단계별 풀이] 1. 두 테이블을  BOARD_ID 로 JOIN2. 조회수가 가장 높은 행을 필터링한다 (서브쿼리 사용)3. CONCAT을 활용해 컬럼들을 연결한다4. FILE_ID로 내림차순 정렬한다[정답]SELECT CONCAT('/home/gre..

우유와 요거트가 담긴 장바구니

[문제] 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. [단계별 풀이] 1. NAME이 Yogurt이거나 Milk인 행들을 필터링2. CART_ID 로 GROUP BY3. NAME의 고유값들을 COUNT4. COUNT 한 값이 2이상인 행들만 필터링5. CART_ID를 조회6. CART_ID로 오름차순 정[정답]SELECT CART_IDFROM CART_PRODUCTSWHERE NAME IN ('Yogurt', 'Milk')GROUP BY CART_IDHAVING COUNT(DISTINCT NAME) ..

헤비 유저가 소유한 장소

[문제] 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요. [단계별 풀이]1. HOST_ID를 GROUP BY 해서 ID를 COUNT2. COUNT 한 수가 2이상인 HOST_ID만 필터링3. ID, NAME, HOST_ID 를 조회4. ID 순으로 정렬 [정답]SELECT ID, NAME, HOST_IDFROM PLACESWHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(ID) >= 2)ORDER BY ID

자동차 평균 대여 기간 구하기

[문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요. [단계별 풀이] 1. 대여 기간 컬럼을 하나 만들고2. CAR_ID로 GROUP BY 한 뒤 해당 컬럼을 AVG3. AVG 한 값이 7일 이상인 행들만 필터링4. CAR_ID와 평균 대여 기간 조회5. 평균 대여 기간을 반올림해주고, 내림차순 정렬, 자동차 ID도 내림차순 정[정답]SELECT..