[문제]
https://leetcode.com/problems/confirmation-rate/description/
[풀이]
1. 모든 user_id가 보여야 하므로 Signups 테이블을 기준으로 LEFT JOIN
2. action 열에서 confirmed인 행과 아닌 행들을 1과 0으로 나눠서 comfirmation_rate을 mean 함수로 손쉽게 구할 수 있음
3. user_id로 그룹화 해준뒤 mean과 round 함수 적용
Pandas
import pandas as pd
def confirmation_rate(signups: pd.DataFrame, confirmations: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(signups, confirmations, on='user_id', how='left')
df['confirmation_rate'] = df['action'].apply(lambda x: 1 if x=='confirmed' else 0)
return df.groupby('user_id', as_index=False)['confirmation_rate'].mean().round(2)
SQL
SELECT s.user_id
, ROUND(AVG(IF(action='confirmed', 1, 0)), 2) as confirmation_rate
FROM Signups s
LEFT JOIN Confirmations c
ON s.user_id = c.user_id
GROUP BY s.user_id
'코딩 테스트 > Pandas' 카테고리의 다른 글
Average Selling Price (0) | 2024.12.25 |
---|---|
Not Boring Movies (0) | 2024.12.25 |
Managers with at Least 5 Direct Reports // agg()와 query() (0) | 2024.12.23 |
Students and Examinations (0) | 2024.12.22 |
Employee Bonus (0) | 2024.12.22 |