2025/05 31

[LeetCode - Pandas] (Medium) 550. Game Play Analysis IV

Table: Activity+--------------+---------+| Column Name | Type |+--------------+---------+| player_id | int || device_id | int || event_date | date || games_played | int |+--------------+---------+(player_id, event_date)는 이 테이블의 기본 키입니다(고유한 값을 가지는 열들의 조합).이 테이블은 일부 게임 플레이어들의 활동을 보여줍니다.각 행은 플레이어가 어떤 날짜에 어떤 기기를 사용해 로그인하여 로그아웃하기 전까지 플레이한 게임 수(0일 수도 있음)를 기록한 것입니다. 문제플레이어가 첫..

[LeetCode - Pandas] (Medium) 184. Department Highest Salary

Table: Employee+--------------+---------+| Column Name | Type |+--------------+---------+| id | int || name | varchar || salary | int || departmentId | int |+--------------+---------+id는 이 테이블의 기본 키입니다(고유한 값을 가지는 열).departmentId는 Department 테이블의 ID를 참조하는 외래 키입니다.이 테이블의 각 행은 직원의 ID, 이름, 급여를 나타냅니다. 또한 해당 직원의 부서 ID도 포함합니다.Table: Department+-------------+-----..

[StrataScratch - SQL] (Medium) Spam Posts

문제 날짜별로 조회된 전체 게시물 중 스팸 게시물의 비율을 계산하십시오. 게시물의 키워드에 문자열 'spam'이 포함되어 있으면 해당 게시물은 스팸으로 간주됩니다. facebook_posts 테이블은 사용자가 게시한 모든 게시물을 저장합니다. facebook_post_views 테이블은 사용자가 게시물을 조회했는지를 나타내는 액션 테이블입니다. 테이블설명 예상결과 ✏️ 풀이 WITH cnt_post AS ( SELECT post_date, COUNT(viewer_id) AS cnt_p FROM facebook_posts p JOIN facebook_post_views v ON p.post_id = v.post_id GROUP BY 1), cnt_spam AS ( SELECT ..

[StrataScratch - SQL] (Medium) Apple Product Counts

문제우리는 사용자 데이터 분석을 통해 적어도 한 번의 이벤트를 수행한 사용자들 사이에서 Apple 기기의 인기도를 이해하려고 합니다. 구체적으로, 다양한 언어별로 이 인기도를 측정하고자 합니다. "macbook pro", "iphone 5s", "ipad air"를 사용하는 Apple 기기 사용자 수를 세고, 각 언어별 전체 사용자 수와 비교해주세요.결과는 언어, Apple 기기 사용자 수, 각 언어별 전체 사용자 수를 포함하여 출력하세요. 마지막으로, 전체 사용자 수가 많은 언어부터 결과가 정렬되도록 하세요. 테이블설명예상결과 ✏️ 풀이SELECT language, COUNT(DISTINCT CASE WHEN device = 'macbook pro' ..

[LeetCode - Pandas] (Medium) 180. Consecutive Numbers

Table: Logs+-------------+---------+| Column Name | Type |+-------------+---------+| id | int || num | varchar |+-------------+---------+SQL에서, id는 이 테이블의 기본 키입니다.id는 1부터 시작하는 자동 증가 열입니다. 문제연속으로 세 번 이상 나타나는 모든 숫자를 찾으십시오.결과 테이블은 임의의 순서로 반환됩니다.결과 형식은 다음 예시와 같습니다.Example 1:Input: Logs table:+----+-----+| id | num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 ||..

[LeetCode - Pandas] (Medium) 178. Rank Scores

Table: Scores+-------------+---------+| Column Name | Type |+-------------+---------+| id | int || score | decimal |+-------------+---------+id는 이 테이블의 기본 키입니다(고유한 값을 가지는 열).이 테이블의 각 행은 게임의 점수를 포함하고 있습니다.점수는 소수점 둘째 자리까지 있는 부동 소수점 값입니다. 문제점수의 순위를 찾는 솔루션을 작성하십시오. 순위는 다음 규칙에 따라 계산되어야 합니다:점수는 높은 점수에서 낮은 점수 순으로 순위가 매겨져야 합니다.두 점수가 동일한 경우, 두 점수는 동일한 순위를 가져야 합니다.동점 이후의 다음 순위 번호는 다음..

[StrataScratch - SQL] (Medium) No Order Customers

문제2019-02-01과 2019-03-01 사이에 주문을 하지 않은 고객을 식별하세요.포함 사항:• 이 날짜 범위 외에만 주문을 한 고객.• 주문을 한 적이 없는 고객.고객의 이름을 출력하세요. 테이블설명 예상결과 ✏️ 풀이WITH order_cust AS ( SELECT cust_id FROM orders WHERE order_date >= '2019-02-01' AND order_date 1. 2019-02-01 ~ 2019-03-01 사이에 주문한 고객 정보 저장2. customer 테이블과 1번 LEFT JOIN3. cust_id가 null 인 고객 조회(1번 날짜 범위의 주문 고객을 제외하기 위함)

[StrataScratch - SQL] (Medium) Number Of Units Per Nationality

문제우리는 임대 아파트와 그 소유자에 대한 데이터를 가지고 있습니다. 30세 이하의 사람들이 소유한 아파트(단위는 unit_id 기준)가 몇 개 있는지, 그리고 그들의 국적별로 나누어 계산하는 쿼리를 작성해주세요. 어떤 국적이 가장 많은 아파트를 소유하고 있는지 보기 원하므로, 결과를 그에 맞게 정렬해주세요. 테이블설명 예상결과 ✏️ 풀이SELECT h.nationality, COUNT(DISTINCT u.unit_id) AS apartment_countFROM airbnb_hosts AS hINNER JOIN airbnb_units AS u ON h.host_id = u.host_idWHERE age 1. airbnb_hosts, airbnb_units 테이블 조인2. 30세 이하 조건 추가3. 아파..

[StrataScratch - SQL] (Medium) Ranking Most Active Guests

문제전체 메시지 활동량을 기준으로 게스트를 순위별로 나열하여 가장 활발한 게스트를 식별하시오. 가장 활발한 게스트는 호스트와 가장 많은 메시지를 주고받은 사람이어야 하며, 가장 높은 순위를 가져야 한다. 두 명 이상의 게스트가 동일한 메시지 수를 가지고 있다면 동일한 순위를 가져야 한다. 중요한 점은, 여러 게스트가 같은 순위를 가지더라도 순위 번호는 건너뛰지 않아야 한다. 결과는 순위, 게스트 식별자, 각 게스트의 총 메시지 수를 명확하게 보여주는 형식으로, 가장 활발한 게스트부터 덜 활발한 게스트 순으로 정렬하여 제시하시오. 테이블설명 예상결과 ✏️ 풀이 WITH sum_m AS ( SELECT id_guest, SUM(n_messages) AS sum_n_message FROM airb..

[StrataScratch - SQL] (Medium) Number of Streets Per Zip Code

문제각 우편번호별로 고유한 거리 이름의 수를 계산하시오. 거리 이름의 첫 번째 단어만 사용하며 대소문자는 구분하지 않는다(예: "FOLSOM"과 "Folsom"은 동일하게 간주). 구조가 반대인 경우(예: "Pier 39"과 "39 Pier")에도 동일한 거리로 간주한다. 결과는 우편번호와 함께 출력하며, 거리 수를 기준으로 내림차순 정렬하고, 거리 수가 같을 경우 우편번호를 오름차순으로 정렬한다. 테이블설명 예상결과 ✏️ 풀이 SELECT business_postal_code AS postal_code, COUNT(DISTINCT LOWER(CASE WHEN REGEXP_LIKE(business_address, "^[0-9]") = 1 THEN substring_index(sub..