24일차

Suhyeon Lee·2024년 11월 4일
0

CodeKata

SQL

69번 다시 풀고 팀 활동

  • 문제
    CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
    • 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지
      • DATE_FORMAT(start_date. '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
      • DATE() 함수가 작동을 안 해서 DATE_FORMAT 사용
    • 총 대여 횟수가 5회 이상인 자동차들
      • COUNT()
        GROUP BY car_id
        HAVING COUNT(
        ) >= 5
    • 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS)
      • COUNT() AS records
        GROUP BY car_id
        HAVING COUNT(
        ) >= 5
    • 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
      • ORDER BY
        MONTH(start_date) ASC
        , car_id DESC
WITH id_cnt_5 AS (
  SELECT
    car_id
    , COUNT(*) AS cnt
  FROM
    car_rental_company_rental_history
  WHERE
    DATE_FORMAT(start_date, '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
  GROUP BY
    car_id
  HAVING
    COUNT(*) >= 5
)
SELECT
  MONTH(start_date) AS month
  , c.car_id
  , COUNT(*) AS records
FROM
  car_rental_company_rental_history c
  JOIN id_cnt_5 i
  USING(car_id)
WHERE
  DATE_FORMAT(start_date, '%Y-%m-%d') BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY
  MONTH(start_date)
  , c.car_id
ORDER BY
  MONTH(start_date)
  , c.car_id DESC
;

91. Not Boring Movies

  • 작성한 쿼리
SELECT
  id
  , movie
  , description
  , rating
FROM
  cinema
WHERE
  id % 2 <> 0
  AND description <> 'boring'
ORDER BY
  rating DESC
;

Python

32. 내적

  • 작성한 코드
def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]
    return answer

참고할 만한 다른 풀이

  • zip()
def solution(a, b):
    return sum([x*y for x, y in zip(a,b)])
  • lambda
solution = lambda x, y: sum(a*b for a, b in zip(x, y))
def solution(a, b):
    return sum(map(lambda i: a[i]*b[i], range(len(a))))
  • list에 append
def solution(a, b):
    c = []
    for i in range(len(a)):
        c.append(a[i]*b[i])
    return sum(c)

팀 과제

TFT 데이터 분석

회고

  • 팀 과제 하느라 개인 공부 시간이 없어서 아쉬움
  • 결측치 제거 처리 후 피드백에서 두연님이 gameId당 8개의 관측치가 모이지 않은 경우 한 명 분의 데이터가 누락된 것이므로 결측치로 보고 해당 gameId를 결측치 처리해야 할 것 같다는 중요한 내용을 말씀해 주셔서 큰 공부가 되었음!
    • 테이블 합치는 과정에서 이상하다고 생각하기는 했는데 해당 데이터가 이상치로 분류될 것이라 지레 짐작하고 넘어갔는데 반성을 많이 했음
    • 앞으로는 꼭 확인을 잘 하고 넘어가자!
  • Rank와 같은 이산형 데이터가 있을 때 해당 데이터로 groupby 하고 count 해보는 습관을 가지면 좋을 것 같다!

profile
2 B R 0 2 B

0개의 댓글

관련 채용 정보