OkBublewrap

Sending vs. Opening Snaps 본문

개발/SQL

Sending vs. Opening Snaps

옥뽁뽁 2025. 3. 8. 12:02

Sending vs. Opening Snaps

문제

1. 나이 그룹별 스냅을 보내고 열어본 시간 비율 구하기

2. 비율은 소수점 두 자리 반올림

3. 보내는데: send / (send + open)

4. 여는데: open / (send + open)

5. 비율 계산할 때 곱하기 100.0

 

풀이

SELECT ab.age_bucket, 
  round(sum(case when a1.activity_type = 'send' then a1.time_spent end) 
  / sum(case when a1.activity_type in ('open', 'send') then a1.time_spent end) * 100.0, 2) as send_perc,
  round(sum(case when a1.activity_type = 'open' then a1.time_spent end) 
  / sum(case when a1.activity_type in ('open', 'send') then a1.time_spent end ) * 100.0, 2) as open_perc
FROM activities a1
	inner join age_breakdown ab on a1.user_id = ab.user_id
group by ab.age_bucket

1️⃣ left join: age_bucket 가져오기

2️⃣ send_prec계산 * 100.0

3️⃣ open_prec계산 * 100.0

4️⃣ 반올림

 

다시 리뷰보니 가독성은 별로 인 것 같음

CTE 해서 값을 가져오고 추후 계산을 하는게 좀 더 좋아 보임

코드 짜는데는 send_perc, open_perc 와 앞에 값만 달라지기 때문에

작성하는데는 이게 더 빠름

 

'개발 > SQL' 카테고리의 다른 글

Highest-Grossing Items  (0) 2025.03.08
Highest-Grossing Items  (0) 2025.03.08
Second Highest Salary  (0) 2025.03.08
User's Third Transaction  (0) 2025.03.08
Teams Power Users  (0) 2025.03.08