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
참고할 만한 다른 풀이
def solution(a, b):
return sum([x*y for x, y in zip(a,b)])
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))))
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 해보는 습관을 가지면 좋을 것 같다!


