关于mysql group by集合函数运用

目前的状况是这样,房地产的数据如此划分:

一个开发商有多个楼盘,一个楼盘有多个预售许可证。

所有官方公布的数据都是以预售许可证为主,我们自己显示给用户看都是楼盘。那我们需要对预售许可证的数据做集合。

数据包括:均价,总价,面积,目前可售套数等。这些数据每天都会更新变化。

我们提供一定时间段数据统计的功能,比如说一周以来总的成交金额,总的成交面积,这些我们可以很简单的通过group by用集合函数sum实现,但是目前可售套数这个数据就比较麻烦,因为这个套数需要取到当前最新的一条纪录,目前group by函数没有提供此类集合函数来实现,如何实现?

数据范例:

dataid avgprice totalmoney area availsale date 证号code
1 7000 900000 100 5 2010-6-4 121
2 7100 900000 100 3 2010-6-4 122
3 7300 900000 100 15 2010-6-4 123
4 7100 900000 100 31 2010-6-5 121
5 7100 900000 100 52 2010-6-5 122
6 7200 900000 100 8 2010-6-5 123

假设需要计算证号121两天的成交数据,
select sum(totalmoney) as tm, sum(area) as a from housedata group by code order by tm

这里就有个问题,可售套数,我需要选最新的,6月5日的数据作为最后的值。。目前没有发现可用的集合函数。。求指点。。

1、首先取出每个code下的max(date)
2、然后将每个code的max date 做为筛选条件,按code分组sum
select sum(totalmoney) as tm, sum(area) from
(
select code,max(date) dt from housedata group by code
)temp
join housedata hd
on hd.date=temp.dt
group by code

max(TO_DAYS(date));
这个不知道行不行, 算出date的总日数, 然后取最大值.

实行不成自己得出来,然后在服务器端算呗.

或者增加一个统计表.

最新两天的数据,假如今天20号,你要18,19号的数据,就把这个时间字段提出来比较一下不就行了,根当前时间比较,当前时间总有提供吧,什么sys_date之类的(具体怎么写看数据库)。难道是我没看明白你说什么???

order by date desc limit 1 不行么?

楼上正解。。