我有一些网站可以收集分析数据,每个网站都有每个国家/地区的数据,而不是所有网站每个月都会获取数据。
我想得到他们最后一组数据中所有网站的访问总和(可能没有相同的日期)。
我不能在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
我也玩过子查询,但还不是很正确。
答案 0 :(得分: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