2013-05-31 72 views
0

感謝您試圖提供幫助。我有一個表格,稱爲帖子,每個帖子都有一行。一個帖子有一個post_date(以unix時間戳格式)和一個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。它會解決這個問題

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行)在一個月內。我不知道該怎麼做,所以我會很感興趣,看看如何解決這個問題。 –