[문제]
https://leetcode.com/problems/percentage-of-users-attended-a-contest/description/
[풀이]
1. register 테이블에서 contest_id 별로 유저 수를 계산한다.
2. 계산한 유저 수를 총 유저 수로 나누어서 비율(percentage을 구해준다.
3. percentage 를 내림차순 정렬, contest_id 를 오름차순 정렬 해준다.
Pandas
def users_percentage(users: pd.DataFrame, register: pd.DataFrame) -> pd.DataFrame:
grouped = register.groupby('contest_id')['user_id'].count().reset_index(name='user_cnt')
grouped['percentage'] = round(grouped['user_cnt'] / len(users) * 100, 2)
grouped.sort_values(by=['percentage', 'contest_id'], ascending=[False, True], inplace=True)
return grouped[['contest_id', 'percentage']]
SQL
SELECT
contest_id
, ROUND(COUNT(user_id)/(SELECT COUNT(user_id) FROM Users)*100, 2) AS percentage
FROM Register
GROUP BY contest_id
ORDER BY percentage DESC, contest_id
'코딩 테스트 > Pandas' 카테고리의 다른 글
Monthly Transactions I (0) | 2024.12.30 |
---|---|
Queries Quality and Percentage (1) | 2024.12.27 |
Project Employees I (0) | 2024.12.26 |
Average Selling Price (0) | 2024.12.25 |
Not Boring Movies (0) | 2024.12.25 |