datas 表 userid data rdate
一些数据如下
1 43 2009-10-26 16:10:00
2 34 2009-10-26 16:10:00
1 43 2009-10-26 16:12:00
2 34 2009-10-26 16:12:00
1 342 2009-10-26 16:22:00
2 233 2009-10-26 16:22:00
1 0 2009-11-26 16:10:00
2 0 2009-11-26 16:10:00
1 43 2009-11-26 16:12:00
2 34 2009-11-26 16:12:00
1 324 2009-11-26 16:22:00
2 32 2009-11-26 16:22:00
这个表数据更新很快,几乎每分钟都有数据现在我想求出2009-10-26至2009-11-26的用量(11-26最晚时间的data-10-26最早时间的data),按理说max(data),min(data),max(data)-min(data),然后group by userid
但在这里不可以这样算,因为data会存在错误的数据,如上面的0等,明显不正确
应该如何改进一下呀
一些数据如下
1 43 2009-10-26 16:10:00
2 34 2009-10-26 16:10:00
1 43 2009-10-26 16:12:00
2 34 2009-10-26 16:12:00
1 342 2009-10-26 16:22:00
2 233 2009-10-26 16:22:00
1 0 2009-11-26 16:10:00
2 0 2009-11-26 16:10:00
1 43 2009-11-26 16:12:00
2 34 2009-11-26 16:12:00
1 324 2009-11-26 16:22:00
2 32 2009-11-26 16:22:00
这个表数据更新很快,几乎每分钟都有数据现在我想求出2009-10-26至2009-11-26的用量(11-26最晚时间的data-10-26最早时间的data),按理说max(data),min(data),max(data)-min(data),然后group by userid
但在这里不可以这样算,因为data会存在错误的数据,如上面的0等,明显不正确
应该如何改进一下呀
1 43 2009-12-15 10:10:00
1 55555 2010-01-01 09:10:00 //这条数据由于各个原因出错,但是存在的
1 46 2010-01-15 10:12:00
一般语句如下select userid,max(data) as a,min(data) as b,max(data)- min(data) as c from datas
where rdate between '2009-12-15 10:00:00' and '2010-01-15 10:59:59') group by userid这个SQL求出的是55555-43=55512,是错误的而我应该求出的是46-43=3,这才是正常的
select data from tb order by data desc
删除异常数据,简单的逻辑怎么能知道那些数据大得离谱呢?
select userid,max(data)as a,min(data)as b,max(data)-min(data)as c
from dataswhere rdate between'2009-12-15 10:00:00'and'2010-01-15 10:59:59')
【WHERE data <> 0 AND data < 55555 ......】
group by userid