목록코드카타/SQL, Pandas (125)
susinlee 님의 블로그
[문제]https://datalemur.com/questions/user-retention Facebook SQL Interview Question | DataLemurFacebook SQL Interview Question: Find the number of monthly active users (MAUs) in July 202.datalemur.com [풀이]1. 기존 테이블에서 최신 월을 가져온다2. 현재 월에서 event_type이 3개인 유저만 가져온다3. 현재 월을 가져오고 유저 수를 계산해준다 [코드]WITH current_month AS ( SELECT MAX(EXTRACT(MONTH FROM event_date)) AS month FROM user_actions), recent_ac..
[문제]https://datalemur.com/questions/top-fans-rank Spotify SQL Interview Question | DataLemurSpotify SQL Interview Question: Write a query to find top 5 ranked artists.datalemur.com [풀이]1. 테이블을 병합해 준뒤 2. 아티스트 별로 곡의 개수를 세어준다3. 곡의 개수를 기준으로 순위를 매겨준다(랭크 함수 ORDER BY에 집계함수를 사용하여 2, 3번을 한번에 처리해준다)4. 상위 5명만 필터링 해준다 (아티스트 오름차순 정렬하면 오답처리됨 - 문제에 문제있음) [코드]WITH artist_rank AS ( SELECT a.artist_name , ..
[문제]https://datalemur.com/questions/sql-top-three-salaries [풀이]RANK() : 동일한 값이 있을 경우, 같은 순위를 부여하고 다음 순위를 건너뜀 (1, 1, 3, 4 ...)DENSE_RANK() : 동일한 값이 있을 경우 같은 순위를 부여하지만, 다음 순위를 건너뛰지 않음 (1, 1, 2, 3 ...)ROW_NUMBER() : 동일한 값이 있어도 무조건 순차적으로 증가 (고유한 순위) 1. 두 테이블을 병합한 후 랭크함수를 사용하여 부서별로 급여 순으로 랭크를 매겨준다.2. 랭크를 통해 상위 3명만 필터링한다. [코드]SELECT department_name , name , salaryFROM( SELECT e.name , d.depa..
[문제]https://datalemur.com/questions/teams-power-users Microsoft SQL Interview Question | DataLemurMicrosoft SQL Interview Question: Write a query to retrieve the top 2 Power Users who sent the highest number of messages.datalemur.com [풀이]- 날짜를 비교할 때 TO_CHAR()를 이용하여 'YYYY-MM' 형식 변환 및 비교가 가능- TO_DATE(컬럼명, 'MM/DD/YYYY') 을 통해 'YYYY-MM-DD' 형태로 변환할 수 있음 (DATE타입으로 변경)1. 2022-08에 메세지를 보낸 직원을 필터링한다2. 직원 ..
[문제]https://datalemur.com/questions/sql-average-post-hiatus-1 Average Post Hiatus | Facebook SQL Interview QuestionFacebook SQL Interview Question: Write a query to obtain days between users first and last post in 2021.datalemur.com [풀이]PostgreSQL 에서 날짜 차이를 구하려면 AGE() 함수 또는 날자 뺄셈(-) 연산자를 사용하면 된다.1. 21년에 작성한 user_id만 필터링해서2. user_id 별로 최근 작성날짜와 첫 작성날짜를 빼준다 [코드]SELECT user_id , MAX(post_date)::..
[문제]https://datalemur.com/questions/sql-page-with-no-likes [풀이]1. 두 테이블에서 page_id를 선택하고2. EXCEPT 연산자를 통해 차집합을 구해준다 PostgreSQL 코드SELECT page_idFROM pagesEXCEPTSELECT page_idFROM page_likes
문제https://datalemur.com/questions/sql-histogram-tweets 해결1. 22년도 필터링 후 유저별로 트윗 개수를 세어준다2. 트윗 개수별로 유저 수를 세어준다. PostgreSQLSELECT tweet_bucket , COUNT(user_id) AS users_numFROM( SELECT user_id , COUNT(tweet_id) AS tweet_bucket FROM tweets -- WHERE EXTRACT(YEAR FROM tweet_date) = '2022' WHERE tweet_date BETWEEN '2022-01-01' AND '2022-12-31' GROUP BY user_id) subGROUP BY tweet_bucket
[문제]https://leetcode.com/problems/department-top-three-salaries/description/ [풀이]1. 부서 테이블과 병합한 후2. 부서별로 salary의 순위를 계산한다. 이때 dense 옵션으로 1, 2, 2, 3 처럼 숫자의 누락이 없게, 같은 값은 같은 수위로 배정한다.3. 순위가 4보다 작은 애들만 필터링한다. Pandasimport pandas as pddef top_three_salaries(employee: pd.DataFrame, department: pd.DataFrame) -> pd.DataFrame: department = department.rename(columns={'id': 'departmentId', 'name': 'dep..