求一SQL语句
怎么求得一表某字段按从大到小排序前 100 条的平均值。 分两步,一步把前100条放到临时表中,然后取平均值。 不使用临时表,可以解决吗? 为啥不用临时表呢?仅一个字段的临时表也好象没啥困难呀。 关键用临时表也没啥速度上的优势啊,直接用一SQL语句取前100 条数据放入临时表似乎不行,还得用游标逐个取出再放入到临时表,我的目的只是想求平均值而已。用临时表没啥意义了。很郁闷,我用的数据库版本低,不支持类似这样的语句:select avg(a) from (select first 100 table_1 as a from table order by table_1 desc) as b
不知道还有啥办法,期待高手啊~~~
回复 #5 shiner 的帖子
写个存储过程好了~~取出前100行,然后做avg 1.你的要求本来就是sql的2次引用(sql嵌套),Informix 9.4以上才支持,所以 select avg(a) from (select first 100 table_1 as a from table order by table_1 desc) as b
如果是在Informix 7.3就会出错.
2.如果你是在4gl环境下,方法就2种!
A:上面有回复,写到临时表再处理一次.
B:写个函数来支持你的这类情况.(我推荐这种,毕竟要考虑可移值性)
页:
[1]