초보자입니다. 순위를 구해오는 쿼리를 짜고싶은데요 어떻게해야하나요.. 0 5 1,946

by 악구리 [MySQL] [2015.08.15 19:41:14]


안녕하세요

MySQL로 쿼리를 짜는데 막힘이 있어서 질문드립니다.

SEQ, ID, KEYWORD, RANKING, REG_DATE이렇게 있는데요.

시간당 10개정도의 데이터가 쌓이고있습니다.

변하는 값은 REG_DATE와 RANKING만 변하는데요 

RANKING은 값이 똑같을수도 있습니다.

그런데 RANKING의 값이 중복되면 ROW가 결합되서 20개만 나와야하는데..

GROUP BY 를 하게되면 가장 위에있는 데이터만 남고 밑에서 다시 같은 값 갖은것까지 없어지니 문제가 됩니다..

이런 쿼리는 어떻게 처리해야하나요...ㅠ

기존에 제가 사용 하는 쿼리는

    
    SELECT A.SEQ, A.ID, A.KEYWORD, A.RANKING, A.REG_DATE
    FROM (
    SELECT SEQ, ID, KEYWORD, RANKING, REG_DATE
    FROM LOGS
    ORDER BY REG_DATE DESC
    LIMIT 0,20
    ) A
    ORDER BY A.REG_DATE ASC

 

입니다.. 이 쿼리 구르비선배님들은 황당해하시겠져..ㅜㅜ 순서를 바꾸려고 저렇게 두번 감았습니다.

저거 말고 다른 좋은 방법있는지도 한수 부탁드립니다!

 

 

by 마농 [2015.08.17 08:53:54]

글쎄요...
순서를 바꾸려고 두번 감은 것에 황당한 것이 아니라...

글제목과 앞의 설명과 뒤의 쿼리가 전혀 달라서 황당하네요.
원하는 것을 명확하게 전달해 주셔야 할 듯 합니다.


by 악구리 [2015.08.17 17:44:54]

아 질문이 두개였던겁니다.

순서바꾸려고 두번 감는것 괜찮은지와

랭크 뽑아올때 중복 제거하는 쿼리에 대한 코멘트를 원했습니다..죄송합니다.


by 마농 [2015.08.17 17:55:13]

1번 질문은 단순 Group By 문제가 아닌 듯 합니다.
  - 시간의 흐름에 따라 결과가 영향을 받는 문제인듯 하구요.
  - 정확한 예시자료를 들어서 질문해 주시면 좋습니다.


2번 질문은 필요하면 해야 하는 거죠?
  - 단순 복잡해 보여서 이상하다 생각하시면 안됩니다.
  - 필요에 의해서 하는 것은 문제 없습니다.
  - 다만 불필요한데 하는것은 문제가 되겠지요.


by 악구리 [2015.08.18 09:46:11]

A.SEQ, A.ID, A.KEYWORD, A.RANKING, A.REG_DATE

1, test, 검색어, 1, 2015-05-05

1, test, 검색어, 1, 2015-05-05

1, test, 검색어, 46, 2015-05-05

1, test, 검색어, 46, 2015-05-05

1, test, 검색어, 46, 2015-05-05

1, test, 검색어, 43, 2015-05-05

1, test, 검색어, 46, 2015-05-05

 

이것을

 

1, test, 검색어, 1, 2015-05-05

1, test, 검색어, 46, 2015-05-05

1, test, 검색어, 43, 2015-05-05

1, test, 검색어, 46, 2015-05-05

 


이렇게 나와야합니다..ㅠㅠ

 

 

 


by 마농 [2015.08.18 09:53:25]

위 예시자료만 봐서는 정렬순서를 보장할만한 컬럼이 보이질 않네요?

정렬순서를 보장할만한 항목을 추가로 보여주세요.

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