쿼리 문의드립니다. 0 2 1,417

by 리틀맹 [SQL Query] [2013.12.26 11:29:40]


안녕하세요 쿼리 문의좀 드립니다.

파일아이디 사용자아이디 등록일 이미지명 ...
---------------------------------------------------------------------------------------------------------
757020 237540 2013/10/28 오후 12:16:50 test1.jpg
757021 237540 2013/10/28 오후 12:16:53    test2.jpg
757035 237540 2013/10/29 오전 10:00:19 test3.jpg
757036 237540     2013/10/29 오전 10:05:19    test4.jpg
......

테이블에 데이터가 이런식으로 들어있습니다.

이걸 하루기준으로 20개까지만 보여줘야 합니다. 예를들어
동일 사용자가 하루에 20개가 넘는 데이터를 등록했다면 20개까지만 자르고, 다음날 데이터는 3개만 등록했다 하면
3개를...그럼 총 23개 데이터를 보여주는 식입니다.

이걸 어떤방법으로 쿼리를 짜야할까요?
날짜만 추출해서 그걸 join 걸어서 쓰기엔 넘 무식한 방법같아서 혹시 조언을 들을수 있을까 하여 문의드립니다.


by 우리집아찌 [2013.12.26 11:38:30]
WITH T AS (
SELECT '757020' FILE_ID ,'237540' USER_ID ,TO_DATE('2013/10/28 12:16:50','YYYY/MM/DD HH24:MI:SS') REG_DATE ,'test1.jpg' IMG_NM FROM DUAL UNION ALL
SELECT '757021','237540',TO_DATE('2013/10/28 12:16:53','YYYY/MM/DD HH24:MI:SS'),'test2.jpg' FROM DUAL UNION ALL
SELECT '757035','237540',TO_DATE('2013/10/29 10:00:19','YYYY/MM/DD HH24:MI:SS'),'test3.jpg' FROM DUAL UNION ALL
SELECT '757036','237540',TO_DATE('2013/10/29 10:05:19','YYYY/MM/DD HH24:MI:SS'),'test4.jpg' FROM DUAL 
)
SELECT * FROM
(SELECT T.* ,
    ROW_NUMBER() OVER(PARTITION BY USER_ID , TO_CHAR(REG_DATE,'YYYYMMDD') ORDER BY REG_DATE) RN
 FROM T )
WHERE RN <= 20

by 리틀맹 [2013.12.26 13:53:11]

잘 되네요^^ 쿼리를 한동안 잊고 지냈더니..막막했었는데 완전 감사드립니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입