2013-03-27 103 views
1

我有一些網站從我收集分析數據,每個網站都有針對每個國家/地區的數據,而不是所有網站每個月都會收集數據。選擇最大日期的總和

我想獲得來自所有網站訪問的最後一組數據(可能沒有相同的日期)的總訪問量。

我不能在where子句中使用MAX(),因爲這是無效的。

我已經試過存儲的最後一天作爲一個變量,但不工作:

select sites.id, sites.name, SUM(data.visits), @start := MAX(data.start_date) 
inner join data on data.profile_id = sites.profile_id 
where data.start_date = @start 
group by sites.profile_id 

我也有子查詢,發揮各地,但只是沒有完全得到它的權利呢。

回答

4

使用子查詢,以獲得最大的日期和參加在:

select sites.id, sites.name, SUM(data.visits), dp.maxdate 
from sites inner join 
    data 
    on data.profile_id = sites.profile_id inner join 
    (select profile_id, MAX(start_date) as maxdate 
     from data 
     group by profile_id 
    ) dp 
    on data.profile_id = dp.profile_id and data.start_date = dp.maxdate 
group by sites.profile_id, sites.name, dp.maxdate 
+0

+1 - 我打字完全相同的查詢! – sgeddes 2013-03-27 19:38:58

相關問題