반응형 rank3 MYSQL - 순서 매기기 ROWNUM MYSQL에서 오라클 처럼 행의 순서를 매겨 행번호를 조회하는 방법들을 알아보겠습니다. MYSQL 8버전 이상에서는 RANK, ROW_NUMBER 내장함수로 쉽게 매길 수 있으나 5버전 이하에서는 다음과 같은 방식으로 조회할 수 있습니다. 1) SET으로 초기화하는 방법 -- 초기화 SET @ROWNUM:=0; -- 조회 SELECT @ROWNUM:=@ROWNUM+1 AS ROWNUM, A.* FROM DEPT A ORDER BY A.SALARY 2) WHERE 절에서 초기화하는 방법 SELECT @ROWNUM:=@ROWNUM+1 AS ROWNUM, A.* FROM DEPT A WHERE (@ROWNUM:=0)=0 ORDER BY A.SALARY 3) FROM 절에서 초기화하는 방법 SELECT @ROW.. 2024. 3. 22. MYSQL - 그룹 순서 매기기 ROWNUM MYSQL에서 행번호를 붙일 때 특정 컬럼을 기준으로 그룹별로 행번호를 붙일 때는 다음과 같은 방식으로 조회할 수 있습니다. 그룹 내에서 행번호 붙이기 SELECT CASE WHEN @GRP=A.DEPT THEN @ROWNUM:=@ROWNUM+1 ELSE @ROWNUM:=1 END AS ROWNUM , (@GRP:=A.DEPT) AS DUM , A.* FROM (SELECT * FROM DEPT ORDER BY DEPT, SALARY DESC) A , (SELECT @ROWNUM:=0) TMP 위와 같이 기준 컬럼을 세팅하여 그룹 내에서 행번호를 매길 수 있습니다. ROWNUM DEPT NAME SALARY 1 개발 김영철 56000 2 개발 김지수 52000 3 개발 이재현 50000 1 마케팅 박수홍.. 2024. 3. 22. MYSQL - RANK / DENSE_RANK / ROW_NUMBER 함수로 순위 쉽게 구하기 MYSQL에서 지원하는 윈도우함수 중 RANK(), DENSE_RANK(), ROW_NUMBER() 함수를 사용하여 순위를 쉽게 구할 수 있습니다. MYSQL 5 버전까지만 해도 순위를 구하기 위해서 사용자 정의 변수를 활용하여 복잡하게 쿼리를 구성했어야 했는데, 8 버전 이상부터는 위의 3가지 함수를 활용하여 쉽게 순위를 구할 수 있게 되었습니다. 그럼 각각의 함수가 어떤 특징을 가지는지 알아보겠습니다. RANK / DENSE_RANK / ROW_NUMBER 함수 특징 ▶ RANK() RANK() 함수의 특징은 중복이 가능하며, 순위가 같은 행이 여러 행이 있을 경우 같은 순위의 수만큼 건너뛰고 다음 순위를 계산합니다. ▶ DENSE_RANK() DENSE_RANK() 함수의 특징은 중복이 가능하며, .. 2023. 2. 24. 이전 1 다음 반응형