티스토리 뷰

select a.* from (
select tmp.*,
rank() over (partition by mail_ymd order by (send+blocks) desc) as rank
from ( 
  select mail_ymd, org_nm,
   sum(i_normal_sum+o_normal_sum) send,
   sum(i_block_sum+o_block_sum) blocks,
   sum(i_block_control+o_block_control) control,
   sum(i_block_filter+o_block_filter) filters,
   sum(i_block_spam+o_block_spam) spam,
   sum(i_block_user+o_block_user) users,
   sum(i_block_virus+o_block_virus) virus
  from ar_day_mail
  where mail_ymd between '20070106' AND '20070107'
  group by org_nm, mail_ymd
  )tmp
)a
where rank<11


이쿼리는 오라클에서 날짜별로 상위 10개의 데이터를 검색하는것입니다.

mysql을 사용해서 이와 같은 내용의 결과가 나오도록 하고 싶은데요

알려주세요

-----------------------------------------------------------------------

rank 함수는 mysql에서는 지원하지 않습니다.

따라서 서브쿼리에서 order by 로 정렬을 해준다음

Limit 10 으로 해서 잘라오는 수밖엔 없습니다.

'데이타베이스 > Mysql' 카테고리의 다른 글

Mysql 기본참고 사항  (0) 2008.06.22
Mysql - 튜닝 (최적화)  (0) 2008.06.22
Mysql explain  (0) 2008.06.22
Mysql 서버 5.0의 신기능  (0) 2008.06.22
Mysql Explain 정보보는법  (0) 2008.06.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크