일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 전환율
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 자동화
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 대시보드
- #패스트캠퍼스 #내일배움카드취업 #국비지원교육 #K디지털기초역량훈련 # 데이터시각화강의
문과생의 데이터 연습
Rank 함수 사용하기! [MySQL] (1) 본문
MySQL에서 Rank 함수 쓰는법!
이번 글에서는 Rank 함수를 알아보겠습니다! Let's GOGO ~~~

실습은 MySQL workbench에서 진행합니다!
MySQL에서 제공해주는 country table에 LifeExpectancy(기대수명) 컬럼이 있습니다.
각 나라들의 LifeExpectancy 순위(rank)을 한번 알아보도록 하겠습니다!
Rank 순위를 정하는 함수는 총 3종류가 있는데요!
첫번 째 배울 순위 함수는 Rank입니다.
모든 순위 함수는 Over 함수랑 잘어울리는 짝궁 함수입니다. 같이 가져갑시다^^ 👍
근데 over 함수가 머요....

중요! ☑ Over 함수는 group by 랑 같은 기능이라고 생각하셔도 무방합니다.
하지만 group by함수는 집계 형태로만 보여주잖아요? Group by 대신 Over 함수를 쓰면 raw데이터 옆에 각종 집계결과를 같이 보여줄수 있는 장점이 있습니다!
이것도 백문이 불여일견이죠 ㅋㅋㅋ
(1) 일반적인 Group by
SELECT Continent, sum(LifeExpectancy)
FROM country
GROUP BY Continent ;
(2) Over
SELECT Code, Name, Continent,
sum(LifeExpectancy) OVER (order by Continent) as LifeExpectancy
FROM country ;
확 느껴지시나요?
raw 데이터 옆에 집계 된 LifeExpectancy(기대수명)을 확인 할 수 있습니다. 원본데이터가 길어서 일부만 가져왔다는 점! 참고부탁드립니다^^ 🤣Aisa의 합계 기대수명이 3439.5입니다. (group by에서도 동일하죠)
1.) Rank + Over 함수
자 그럼 이제 본격적으로 Rank함수를 가봅시다.
SELECT Name, Continent, LifeExpectancy,
Rank() over(order by LifeExpectancy DESC ) as LifeExpectancy_rank
FROM country ;
DESC 함수를 써서 내림차순으로 보여줍니다.
Rank 함수는 공통순위는 같은 순위를 매깁니다. 그런데 그 다음 순위는 건너뛴 상태로 순위를 매깁니다.
초록색으로 칠해진 순위9를 보시면 8이 아니라 9로 건너뛰었음을 알 수 있습니다^^
2.) Dense_Rank + Over 함수
두번 째 순위 함수는 Dense_Rank 입니다
SELECT Name, Continent, LifeExpectancy,
dense_rank() over(order by LifeExpectancy DESC) as LifeExpectancy_rank
FROM country ;
Rank와 다르게 8이 살아있습니다! Dense_Rank는 건너뛰지 않고 공통순위가 있더라도 바로 다음 숫자로 순위를 지정해줍니다.
3.) Row_number() + Over 함수
SELECT Name, Continent, LifeExpectancy,
row_number() over(order by LifeExpectancy DESC) as LifeExpectancy_rank
FROM country ;
마지막 Rank 함수는 row_number 함수입니다. 아까 두 위함수와 다르게 공통순위 그런건 그냥 무시하고 1부터 ~ 쭉
차례대로 순위를 매깁니다.
이렇게 해서 MySQL의 순위 함수 사용법을 알아봤습니다.
다음 글에서는 순위함수 조금 더 깊게 다뤄보겠습니다.
틀린부분이나 피드백부분이 있으면 댓글 부탁드립니다. 감사합니다!

'SQL > MySQL' 카테고리의 다른 글
Lag & Lead 함수 사용하기! [MySQL] (2) (0) | 2022.04.29 |
---|---|
[MySQL] Lag & Lead 함수 사용하기! (1) (0) | 2022.04.29 |
Rank 함수 사용하기! [MySQL] (2) (0) | 2022.04.28 |
Rollup 함수 사용하기! [MySQL] (2) (1) | 2022.04.28 |
[MySQL] Rollup 함수 사용하기! (1) (3) | 2022.04.27 |