현재 게시판테이블에 있는 게시글들 전체를 rank함수를 사용하여 일자별로 묶어서 갯수를 세려고 하는데요!
아래와 같이 SQL문을 만들었는데요
1 2 3 | SELECT rownum rn, RANK() OVER (PARTITION BY TB.등록일 ORDER BY TB.등록일) AS DAY_ID, TB.* FROM ( SELECT 게시글제목, 작성자, DATE_FORMAT(등록시간, '%Y-%m-%d' ) AS 등록일 FROM 게시판테이블 ) TB |
등록시간이 datetime타입이여서 일자별로 묶어줘야하기때문에 DATE_FORMAT함수를 사용하여 YYYY-mm-dd 형식으로 출력하였고,
이를 partition by 로 묶어주었는데 자꾸만 DAY_ID 가 1로만 나옵니다
사용하는 DB는 큐브리드이고 rank 함수를 지원하는 부분 역시 확인하였는데요
혹시 제가 어떤 부분을 간과하고 있는걸까요?
같은 일자 안에서는 등록일이 전부 동일하기 때문에 공동 1등 입니다.
정렬기준을 등록일이 아닌 등록시간으로 바꾸세요.
공동 순위가 아닌 유일번호를 원한다면? RANK 가 아닌 ROW_NUMBER 를 사용하고
등록시간까지도 같은 동시 등록건이 있을 수 있으니, 유니크한 정렬기준을 추가하세요.(예 : 게시글번호)
인라인뷰를 굳이 사용할 필요는 없을 것 같습니다.
1 2 3 4 5 6 7 8 9 | SELECT ROWNUM rn , ROW_NUMBER() OVER(PARTITION BY DATE_FORMAT(등록시간, '%Y-%m-%d' ) ORDER BY 등록시간, 게시글번호) day_id , 게시글번호 , 게시글제목 , 작성자 , 등록시간 , DATE_FORMAT(등록시간, '%Y-%m-%d' ) 등록일 FROM 게시판테이블 ; |