2013-05-31 2 views
0

도움을 주셔서 감사합니다. 각 게시물마다 행이있는 게시물이라는 테이블이 있습니다. 포스트는 post_date (유닉스 타임 스탬프 형식)와 author_id를 가지고있다.복잡한 조건으로 MySQL 쿼리 최적화

월간 5 회 이상 올린 고유 작가 수를 월 및 연도별로 그룹화하려고합니다.

나는 (그 달 이내에 5 개 이상의 게시물에 대한 필터없이) 월 및 연도 별 고유의 저자 지금이 쿼리는 다음과 같습니다

select 
    month(from_unixtime(p.post_date)) as month, 
    year(from_unixtime(p.post_date)) as year, 
    count(distinct p.author_id) 
from posts p 
group by month,year 
order by year desc,month desc 

당신은 단지 계산 것이다 나 필터를 추가 할 수시겠습니까 그 달에 5 번 이상 게시물을 올린 저자들?

UPDATE

다음 쿼리 작동하지만 매우 느린, 그냥이 월 및 연도에 대한 조건을 추가 할 경우에도. 누군가 그것을 더 좋은 방법으로 생각할 수 있습니까?

select 
    month(from_unixtime(p.post_date)) as month, 
    year(from_unixtime(p.post_date)) as year, 
    count(distinct p.author_id) 
from posts p 
    where (
    select count(*) from posts p2 where p2.author_id=p.author_id 
    and month(from_unixtime(p.post_date))=month(from_unixtime(p2.post_date)) 
    and year(from_unixtime(p.post_date))=year(from_unixtime(p2.post_date)) 
    )>=5 
group by month,year order by year desc,month desc 

답변

1

당신은 카운트> 5 .IT 문제 어쩌면

select month(from_unixtime(p.post_date)) as month, 
    year(from_unixtime(p.post_date)) as year, 
    count(p.author_id) c from posts p 
    group by author , month,year having c >5 
    order by year desc,month desc 
+0

내가 그냥 잘못 레딩있어를 해결할 필요 사용할 수 있지만 고유 한 저자의 수를 반환 계산하지 않습니다? –

+0

@KyleG. 지금 당장 올바른지 한번 확인해주세요. 한번만 확인해주세요. – PSR

+0

그건 내 마음을 잃지 않는 것이 더 다행 스럽네요. 그러나 이제 질문은 5 번 게시자 (IOW, 같은 저자와 5 행)를 찾는 방법입니다.) 한 달에. 나는 그것을 어떻게하는지 모른다. 그래서 나는 이것이 어떻게 풀어 지는지 보는 것에 흥미가있을 것이다. –