본문 바로가기

SQL71

[식품 배송 데이터 분석] 매출 지표 분석 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. instacart라는 회사의 데이터를 기반으로 분석을 수행해 보자. 먼저, 주요 지표를 추출하는 것으로 시작한다. 보통 다음과 같은 지표로 비즈니스의 전반적인 현황을 파악한다. 1. 전체 주문 건수 2. 구매자 수 3. 상품별 주문 건수 4. 카트에 가장 먼저 넣는 상품 10개 5. 시간별 주문 건수 6. 첫 구매 후 다음 구매까지 걸린 평균 일수 7. 주문 건 당 평균 구매 상품 수(UPT; Unit Per Transaction) 8. 인당 평균 주문 건수 9. 재구매율이 가장 높은 상품 10개 10. Department별 재구매율이 가장 높은 상품 10개 이 중, 구하기 조금 까다로웠던 지표 몇 가지만 살펴보겠다. 🛒 카트에 가장 먼저 넣는 상품.. 2023. 10. 10.
[프로그래머스] 주문량이 많은 아이스크림들 조회하기 문제 설명 문제 7월 아이스크림 총 주문량과 상반기의 아이스크림 총주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해 주세요. 풀이 7월의 맛 별 총 주문량과 상반기의 맛 별 총주문량을 더해야 한다 : 7월에는 출하번호가 맛 별로 여러 개일 수 있으니, 서브쿼리로 총주문량을 생성한다. 7월의 맛 & 총주문량이 담긴 테이블을 join 한다, 이때 키는 FLAVOR이다. 맛 별로 총주문량을 계산해야 하니, FLAVOR을 기준으로 그룹화하고, 정렬은 상반기 + 7월 주문량 합을 내림차순 한다. 상위 3개만 조회할 수 있게 LIMIT사용 select a.FLAVOR from FIRST_HALF a left join (select FLAVOR, sum(TOTAL_ORDER) as tot.. 2023. 10. 9.
[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 문제 설명 다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다. 문제 FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 풀이 식품분류별로 (가격이 제일 비싼) 식품의 분류, 가격, 이름을 조회 : select 절에 CATEGORY, PRICE, PRODUCT_NAME gro.. 2023. 10. 9.
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해.. 2023. 10. 9.
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요. 풀이 이 문제 풀이 순서는 '음식 종류별'로 가장 많은 '즐겨찾기 수'를 찾는 것이다. 그리고 이에 해당하는 식당의 정보를 가져와야 한다. where 절에서 서브쿼리를 사용하여 위의 조건을 설정할 수 있다. FOOD_TYPE 별로 FAVORITES의 최댓값을 구한다. 아래와 같은 결과가 나올 것이다. 위의 내용에 해당하는 사항을 기준으로 필터링할 것이기 때문에, where 절에 두 개 컬럼 조건을 걸어주는 것이다. 마지막으로, order by 로 정렬을 지정한다. SELECT FOOD_TYPE,.. 2023. 10. 7.
[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 문제 USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. 풀이 이 문제에서 먼저 고려할 점은, '완료'된 중고거래와 '회원' 기준 총 거래액의 계산이다. 먼저, 완료된 중고거래만 필터링 하기 위해 where 절에 조건을 걸어준다. 그리고 회원 별로 총 거래액을 계산하기 위해 user_id 를 기준으로 Group by 하여, 총 거래액을 계산한다. 이때, 닉네임도 출력해야하므로, 고윳값이겠지만 max()를 사용해서 닉네임도 집계함수로 출력했다. 최종적으로 총 거래액 70만원이 넘어야하는데 이 조건은 group by .. 2023. 10. 6.
M1 mac MySQL 삭제 후 재설치하기 MySQL을 잘 쓰다가 종료하고 다시 켰더니 아래와 같이 나타났다. 심지어 '스키마 생성하기'도 되지 않고 에러가 뜬다. 워크벤치엔 문제가 없는 것을 확인했다면 다음 방법으로 MySQL 을 삭제 후 재설치한다. homebrew로 mySQL 설치한 경우 : 완전 삭제하기 # 프로세스 죽이기 brew services stop mysql # 설치 경로 확인 which mysql /usr/local/bin/mysql # homebrew로 삭제 brew uninstall --force mysql homebrew로 재설치 brew install mysql # mysql 서비스 시작 brew services start mysql # root 비번 생성 mysql_secure_installation => VALIDAT.. 2023. 10. 6.
local에 있는 csv 파일을 mySQL로 불러오기 MySQL Shell Script에서 직접 파일을 불러오는 방식으로 다음과 같은 에러를 해결할 수 있음 1. mySQL workbench 재접속 Quit MySQL Workbench 2. 다시 접속 후, Edit Connection 에서 설정 변경 Edit Connetion > Advanced > Others 메뉴 OPT_LOCAL_INFILE=1 을 입력 Test Connection 버튼을 클릭하여 정상적으로 접속이 되는지 확인 3. 테이블 생성 테이블이 미리 생성되어 있지 않으면 csv 파일을 불러올 수 없음 첫번째 줄 의미 : 앞서 생성된 스키마를 사용하겠음 dataset2라는 테이블 생성하기 USE mydata; CREATE TABLE `dataset2` ( `Clothing ID` int DEF.. 2023. 10. 6.
[자동차 매출 데이터] Churn Rate 구하기 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. ✅ Churn Rate 란? 활동 고객 중 얼마나 많은 고객이 비활동 고객으로 전환되었는지를 의미하는 지표이다. 기업에서는 이탈 고객 예측과 예측 결과를 바탕으로 적절한 마케팅 전략을 취하고자 노력하므로 Churn Rate 가 중요하다. Churn Rate는 일반적으로 다음과 같이 정의한다. max(구매일, 접속일) 이후 일정 기간동안 구매/접속을 하지 않은 상태 보통 90일(3개월)을 기준으로 Churn Rate을 구한다. 마지막 구매, 접속일이 현 시점 기준 3개월이 지난 고객이 이탈 고객이 되는 것이다. 1. Churn Rate 구하기 Churn Rate의 기준은 마지막 구매일이다. 따라서 각 고객의 마지막 구매일을 먼저 구해야 한다. sele.. 2023. 10. 5.
728x90