[내일배움캠프-퍼포먼스 마케터] 본캠프 57일차

이석민·2025년 7월 9일
post-thumbnail

오늘 학습한 내용

SQL 코드카타

테이블:Movies

+---------------+---------+ 
| 열 이름 | 유형 | 
+---------------+---------+ 
| movie_id | int | 
| title | varchar | 
+---------------+---------+ 
movie_id는 이 테이블의 기본 키(고유한 값을 갖는 열)입니다. 
title은 영화의 이름입니다.
 

테이블:Users

+---------------+---------+ 
| 열 이름 | 유형 | 
+---------------+---------+ 
| user_id | int | 
| name | varchar | 
+---------------+---------+ 
user_id는 이 테이블의 기본 키(고유한 값을 가진 열)입니다. 
'name' 열은 고유한 값을 가집니다.
테이블:MovieRating
 
이 테이블에는 사용자가 리뷰에서 평가한 영화 평점이 포함되어 있습니다. 
created_at은 사용자의 리뷰 날짜입니다.
 

해결책을 작성하세요:

가장 많은 영화를 평가한 사용자의 이름을 구하세요. 
평가 수가 같으면 사전순으로 더 작은 사용자 이름을 반환하세요.
에서 평균 평점이 가장 높은 영화 제목을 찾으세요 February 2020. 동점인 경우, 
사전순으로 더 작은 영화 제목을 반환하세요.

작성 쿼리

(SELECT name AS results
FROM MovieRating JOIN Users USING(user_id)
GROUP BY name
ORDER BY COUNT(*) DESC, name
LIMIT 1)

UNION ALL

(SELECT title AS results
FROM MovieRating JOIN Movies USING(movie_id)
WHERE EXTRACT(YEAR_MONTH FROM created_at) = 202002
GROUP BY title
ORDER BY AVG(rating) DESC, title
LIMIT 1)

설명

첫 번째 쿼리(사용자용):
SELECT name AS results: 사용자 이름을 선택하여 "결과"라는 별칭을 지정합니다.
FROM MovieRating JOIN Users USING(user_id): 
user_id를 사용하여 MovieRating 테이블과 Users 테이블을 조인합니다.
GROUP BY name: 결과를 사용자 이름으로 그룹화합니다.
ORDER BY COUNT(*) DESC, name: 
결과를 평점 수를 내림차순으로 정렬하고, 동점인 경우 사용자 이름을 기준으로 정렬합니다.
LIMIT 1: 정렬된 목록에서 맨 위 행(가장 자주 사용된 사용자)으로 출력을 제한합니다.

두 번째 질의(2020년 2월 영화):
SELECT title AS results: 영화 제목을 선택하여 "결과"라는 별칭을 지정합니다.
FROM MovieRating JOIN Movies USING(movie_id): 
movie_id를 사용하여 MovieRating 및 Movies 테이블을 조인합니다.
WHERE EXTRACT(YEAR_MONTH FROM created_at) = 
202002: 2020년 2월에 생성된 평점을 필터링합니다
GROUP BY title. : 결과를 영화 제목으로 그룹화합니다.
ORDER BY AVG(rating) DESC, title: 
결과를 평균 평점을 내림차순으로 정렬하고, 동점이 있는 경우 영화 제목을 기준으로 정렬합니다.
LIMIT 1: 정렬된 목록에서 맨 위 행
(2020년 2월에 가장 높은 평점을 받은 영화)으로 출력을 제한합니다.

모두 연합:
두 쿼리의 결과를 결합합니다. 
"UNION ALL"는 중복된 행이라도 모든 행을 보존하는 데 사용됩니다.

PYTHON 코드카타

문제 설명
정수 num1과 num2가 주어질 때, 
num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

제한사항
-50000 ≤ num1 ≤ 50000
-50000 ≤ num2 ≤ 50000

풀이

def solution(num1, num2):
    answer = num1 - num2
    return answer

0개의 댓글