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

1 回答 1

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
于 2013-03-27T19:38:17.923 回答