TIL_[SQL+미니 프로젝트]

김희정·2023년 12월 20일

TIL

목록 보기
16/57
post-thumbnail

오늘 한 것

  • 프로젝트_ 헤비유저 정의 구체화, 당위성 찾아가기
  • SQL 코드카타 3문제

프로젝트 진행과정

  • 헤비유저와 일반유저는 어제 나눴고, 그 두 집단의 매출액을 비교해봤는데, 일반유저의 매출액이 훨씬 많았다. 그렇게 되면 우리 프로젝트의 첫번째 목적이었던 큰 대전제가 무너지는 거라고 생각해서 좀더 깊게 파봤다.
  • 현재 프로젝트에서 쓰고있는 데이터에는 유저id가 중복되는 데이터는 없고, 이전 구매기록횟수로만 판단을 해야하기 때문에 초반에 헤비유저를 나누는 기준에 대해 많이 헤맸었다.
  • 정확한 매출액은 알 수가 없어도, 가지고 있는 데이터로 충분히 총 매출액(과거 매출~현재)을 추측할 수 있다는 사실을 깨달았고 계산해본 결과,
    충성고객의 총 매출액이 일반고객의 총 매출액보다 약 1.8배 높을것이라는 예측을 할 수 있었다.

코드카타

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

Q. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 
2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 
해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 
결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 
특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
(정답)
SELECT
    MONTH(START_DATE) AS 'MONTH',
    CAR_ID,
    COUNT(HISTORY_ID) AS 'RECORDS'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY

WHERE CAR_ID IN (
    SELECT CAR_ID
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY

    WHERE YEAR(START_DATE) = '2022'
        AND MONTH(START_DATE) BETWEEN '8' AND '10'

    GROUP BY CAR_ID
    HAVING COUNT(HISTORY_ID) >= 5
        AND MONTH(START_DATE) BETWEEN '8' AND '10'
)

GROUP BY MONTH, CAR_ID
HAVING RECORDS > 0
ORDER BY MONTH ASC, CAR_ID DESC

이 답안을 참고해서 나만의 언어로? 내 수준에서 비슷하게 풀어쓸 수 있는 코드로 풀어봤는데, 왜 내꺼는 오류고 이사람꺼만 정답이라고 하는지 이해가 안간다. 왜 month조건은 두번이나 적었을까..?
다음에 다시 시도해봐야겠다.

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

Q. MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 
회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 
리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
(정답)
select a.member_name, b.review_text, date_format(b.review_date, '%Y-%m-%d') REVIEW_DATE
from member_profile a join rest_review b
on a.member_id=b.member_id
where b.member_id = (select member_id
                    from rest_review
                    group by member_id
                    order by count(*) desc
                    limit 1)
order by 3, 2

어느정도 큰틀은 작성할 줄 아는데,
아직도 디테일한 부분에서 실수가 잦고, 디테일 한 부분에서 모르는게 너무 많다고 느끼는 중이다 😥

8월부터 10월까지 총 대여횟수가 5회 이상인 차량에 대해서 월별로 횟수를 보여줘야 하고,
즉, 월별로 출력했을 때, RECORDS 값이 5 미만일 수도 있다고 한다.

profile
데이터 애널리스트가 되고 싶은

0개의 댓글