전체 글 168

[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..

[LeetCode - Pandas] (Medium) 177. Nth Highest Salary

Table: Employee+-------------+------+| Column Name | Type |+-------------+------+| id | int || salary | int |+-------------+------+id는 이 테이블의 기본 키(고유한 값을 갖는 열)입니다.이 테이블의 각 행은 직원의 급여에 대한 정보를 포함하고 있습니다. 문제Employee 테이블에서 n번째로 높은 서로 다른 급여를 찾는 솔루션을 작성하세요.서로 다른 급여가 n개보다 적으면 null을 반환하세요.결과 형식은 다음 예시와 같습니다.Example 1:Input: Employee table:+----+--------+| id | salary |+----+--------+| 1 ..

[LeetCode - Pandas] (Medium) 176. Second Highest Salary

Table: Employee+-------------+------+| Column Name | Type |+-------------+------+| id | int || salary | int |+-------------+------+id는 이 테이블의 기본 키(고유한 값을 갖는 열)입니다.이 테이블의 각 행은 직원의 급여에 대한 정보를 포함하고 있습니다. 문제Employee 테이블에서 두 번째로 높은 서로 다른 급여를 찾는 솔루션을 작성하세요.두 번째로 높은 급여가 없으면 null을 반환하세요 (Pandas에서는 None을 반환하세요).결과 형식은 다음 예시와 같습니다.Example 1:Input: Employee table:+----+--------+| id | salar..

[StrataScratch - SQL] (Medium) Acceptance Rate By Date

문제친구 요청이 전송된 각 날짜에 대한 친구 수락률을 계산하세요. 요청은 action = sent일 때 전송된 것으로 간주되며, action = accepted일 때 수락된 것으로 간주됩니다. 요청이 수락되지 않은 경우, 해당 요청의 수락 기록은 테이블에 존재하지 않습니다. 출력은 요청이 전송된 날짜 중에서 적어도 하나 이상의 요청이 수락된 날짜만 포함해야 하며, 수락률은 해당 날짜에 대해서만 계산될 수 있습니다. 결과는 가장 이른 날짜부터 가장 늦은 날짜 순으로 정렬되어야 합니다. 테이블설명 예상결과 ✏️ 풀이WITH sender AS ( SELECT * FROM fb_friend_requests WHERE action = 'sent'), receiver AS ( SELECT *..

[StrataScratch - SQL] (Medium) Premium vs Freemium

문제날짜별로 유료 사용자와 비유료 사용자의 총 다운로드 수를 구하세요. 비유료 사용자가 유료 사용자보다 더 많은 다운로드를 한 기록만 포함하세요. 출력은 가장 이른 날짜부터 정렬되어야 하며, 세 개의 열인 날짜, 비유료 다운로드 수, 유료 다운로드 수를 포함해야 합니다. 힌트: Oracle에서는 날짜 열을 참조할 때 "date"를 사용하세요 (예약어). 테이블설명 예상결과 ✏️ 풀이SELECT date, SUM(IF(paying_customer = 'no', downloads, 0)) AS non_paying, SUM(IF(paying_customer = 'yes', downloads, 0)) AS payingFROM ms_download_facts AS dJOIN ms_use..

[LeetCode - Pandas] (Easy) 175. Combine Two Tables

Table: Person+-------------+---------+| Column Name | Type |+-------------+---------+| personId | int || lastName | varchar || firstName | varchar |+-------------+---------+이 테이블에서 personId는 기본 키(고유한 값이 있는 열)입니다.이 테이블은 일부 사람들의 ID와 그들의 이름 및 성에 대한 정보를 포함하고 있습니다.Table: Address+-------------+---------+| Column Name | Type |+-------------+---------+| addressId | int || personI..

[LeetCode - Pandas] (Easy) 181. Employees Earning More Than Their Managers

Table: Employee+-------------+---------+| Column Name | Type |+-------------+---------+| id | int || name | varchar || salary | int || managerId | int |+-------------+---------+이 테이블에서 id는 기본 키(고유한 값이 있는 열)입니다.이 테이블의 각 행은 직원의 ID, 이름, 급여, 그리고 그들의 관리자 ID를 나타냅니다. 문제관리자보다 더 많은 급여를 받는 직원을 찾는 해결책을 작성하세요.결과 테이블은 아무 순서로 반환해도 됩니다.결과 형식은 다음 예시를 따르세요.Example 1:Input: E..

[StrataScratch - SQL] (Medium) Clicked Vs Non-Clicked Search Results

문제검색 결과를 기반으로 두 개의 비율을 계산하세요. 먼저, 클릭된 기록들(clicked = 1) 중 상위 3위 안에 있는 비율을 구하세요. 두 번째로, 클릭되지 않은 기록들(clicked = 0) 중 상위 3위 안에 있는 비율을 구하세요. 두 비율 모두 전체 검색 기록 수를 기준으로 계산되어야 하며, 동일한 행에 두 개의 열로 출력되어야 합니다. 테이블설명 예상결과 ✏️ 풀이WITH clicked_cnt AS ( SELECT COUNT(*) AS c_cnt FROM fb_search_events WHERE clicked = 1 AND search_results_position 1. clicked = 1 의 top3 count2. clicked = 0 의 top3 count3. 전체 1..

[StrataScratch - SQL] (Medium) Meta/Facebook Accounts

문제2020년 1월 10일에 종료된 계정의 비율을 fb_account_status 테이블을 사용하여 계산하세요. 테이블설명 예상결과 ✏️ 풀이WITH total_cnt AS ( SELECT COUNT(*) AS totalCnt FROM fb_account_status WHERE status_date = '2020-01-10')SELECT COUNT(acc_id) / totalCnt AS closed_ratioFROM fb_account_statusJOIN total_cntWHERE status_date = '2020-01-10' AND status = 'closed';1. 2020-01-10 일자의 계정 카운트2. 2020-01-10 일자의 종료 계정 카운트3. 1번의 값과 2번의 값 ..