문제:
나의 풀이:
select from_user
, count(*) as total_emails
, rank() over (order by count(*) desc, from_user)as activity_rank
from google_gmail_emails
group by from_user;
오잉 너무 ez
솔루션 확인
SELECT from_user,
count(*) as total_emails,
ROW_NUMBER() OVER(ORDER BY count(*) DESC, from_user ASC)
FROM google_gmail_emails
GROUP BY from_user
ORDER BY 2 DESC, 1
솔루션은 로 넘버를 썼다,,,,,,,,!
근데 테크니컬리 로 넘버 쓰는게 맞네
문제에서 유니크ㄹ한 랭크값을 가져야 한다고 한 부분을 보고
순간 덴스랭크는 중복 랭크가 있고 랭크는 중복 랭크가 없다고 생각해서 랭크를 쓴 거 였는데
사실 랭크도 중복 랭크가 있다;; 다만 중복 된 만큼 다음 랭크가 사라지는 거고 (1 1 3 4)
덴스 랭크는 중복과 상관없이 다음 랭크가 있는 차이인 거라 (1 1 2 3)
이번 문제에서 둘 다 적절하지 않음
근데 왜 정답처리가 됐을까나,,?
로넘버는 말 그래도 행 숫자이기 때문에 그냥 행 마다 숫자가 매겨짐
따라서 유니크한 랭크값을 보고 싶은 이 문제에 적합한 함수가 된다
밥오
문제를 잘 읽자..!
'SQL > StrataScratch' 카테고리의 다른 글
[MySQL] (Medium) New Products (1) | 2024.02.08 |
---|---|
[MySQL] (Medium) Finding User Purchases (2) | 2024.02.07 |
[MySQL] (Medium) Users By Average Session Time (2) | 2024.01.31 |
[MySQL] (Medium) Workers With The Highest Salaries (0) | 2024.01.26 |
[MySQL] (Medium) Most Profitable Companies (0) | 2024.01.26 |