idealist
Utopia
idealist
전체 방문자
오늘
어제
  • 분류 전체보기 (6)
    • Backend (3)
      • Java (1)
      • 서버 (2)
    • Frontend (0)
      • Vue (0)
    • Database (2)
      • MySQL (2)
    • Utopia (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 톰캣
  • 팀즈
  • 랭크함수
  • DATE_FORMAT
  • 달력
  • https
  • MySQL
  • file.delete
  • 백엔드
  • webhook
  • JSON
  • 순위
  • RestTemplate
  • 자바
  • 날짜 데이터
  • Rank
  • MariaDB
  • 랭킹함수
  • HTTP
  • 순위함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
idealist

Utopia

Database/MySQL

[MariaDB] 랭크 순위 함수 대체하기 (10.1 이하 버전)

2023. 2. 14. 11:03
MariaDB 10.2 이상 버전은 RANK() 함수를 이용할 수 있습니다. 버전은 select version() 으로 확인
10.1 이하 버전에서 랭크 함수 대체법
SELECT a.*,
(case @chk when a.userId then @rownum:=@rownum+1 ELSE @rownum:=1 END) rank,
(@chk:=a.userId) chk
FROM test a, (SELECT @chk:='' ,@rownum:=0 FROM DUAL) b
WHERE DATE_FORMAT(a.datetime,'%Y%m%d') BETWEEN 20230101 AND 20230331
GROUP BY date,userId,datetime
ORDER BY date,userId,datetime

  • chk는 순위를 매길 때 필요한 변수입니다. 어떤 컬럼을 기준으로 순위를 매길지 정한 후 chk로 지정해줍니다.
  • RANK()함수에서 PARTITION BY와 같은 기능을 하는 것이 GROUP BY입니다.
  • GROUP BY를 통해 여러 기준이 되는 컬럼을 정하여 순위를 매길 수 있습니다.
  • SELECT 후 chk를 보면 chk의 데이터가 바뀔 때 마다 rank가 다시 매겨지는 것을 확인 할 수 있습니다.

이상입니다! 궁금한 점 있으시면 댓글 달아주세요!

참고

RANK()함수

PARTITION BY

저작자표시 (새창열림)

'Database > MySQL' 카테고리의 다른 글

[MariaDB] 달력 날짜 데이터 insert 하기  (1) 2022.12.12
    'Database/MySQL' 카테고리의 다른 글
    • [MariaDB] 달력 날짜 데이터 insert 하기
    idealist
    idealist
    개발하자

    티스토리툴바