leetcode : 1693. Daily Leads and Partners
다이어그램
erDiagram
LEADS {
date date_id PK
varchar make_name
int lead_id
int partner_id
}
각 날짜, 이름 별 고유 lead, partner id 개수 카운팅
문제 풀이
MySQL 1
SELECT DATE_ID, MAKE_NAME, COUNT(DISTINCT LEAD_ID) AS UNIQUE_LEADS, COUNT(DISTINCT PARTNER_ID) AS UNIQUE_PARTNERS
FROM DAILYSALES
GROUP BY DATE_ID, MAKE_NAME
- 단순 GROUP BY + COUNT DISTINCK 문제
MySQL 2
SELECT
DATE_ID AS date_id,
make_name,
COUNT(DISTINCT LEAD_ID) AS unique_leads,
COUNT(DISTINCT PARTNER_ID) AS unique_partners
FROM DAILYSALES
GROUP BY DATE_ID, MAKE_NAME
- 단순 GROUP BY + COUNT DISTINCK 문제
Pandas
def daily_leads_and_partners(daily_sales: pd.DataFrame) -> pd.DataFrame:
grouped = daily_sales.groupby(['date_id','make_name']).agg(
unique_leads = ('lead_id','nunique'),
unique_partners = ('partner_id','nunique')
).reset_index()
return grouped
- 단순 group by + nunique문제
Pandas
def daily_leads_and_partners(daily_sales: pd.DataFrame) -> pd.DataFrame:
grouped = (daily_sales.groupby(['date_id','make_name']).nunique()
.reset_index().rename({"lead_id":"unique_leads", "partner_id", "unique_partners" }))
return grouped
- 공통으로 nunique를 집계하고, 테이블에 집계 컬럼이 정해져있어서 바로 nunique로 설정하고 rename을 쓰자.
코멘트
- 쉬운문제
'Data Analysis > SQL Pandas' 카테고리의 다른 글
leetcode : 1873. Calculate Special Bonus (0) | 2025.02.10 |
---|---|
leetcode : 1789. Primary Department for Each Employee (0) | 2025.02.09 |
leetcode : 1729. Find Followers Count (0) | 2025.02.06 |
leetcode : 1683. Invalid Tweets (0) | 2025.02.06 |
leetcode : 1667. Fix Names in a Table (0) | 2025.02.06 |
leetcode : 1661. Average Time of Process per Machine (0) | 2025.02.05 |
leetcode : 1633. Percentage of Users Attended a Contest (0) | 2025.02.04 |
댓글