shiner 发表于 2009-08-08 11:06

求一SQL语句

怎么求得一表某字段按从大到小排序前 100 条的平均值。

wuicpp 发表于 2009-08-08 18:29

分两步,一步把前100条放到临时表中,然后取平均值。

shiner 发表于 2009-08-08 21:15

不使用临时表,可以解决吗?

yhz6708 发表于 2009-08-11 21:31

为啥不用临时表呢?仅一个字段的临时表也好象没啥困难呀。

shiner 发表于 2009-08-13 16:13

关键用临时表也没啥速度上的优势啊,直接用一SQL语句取前100 条数据放入临时表似乎不行,还得用游标逐个取出再放入到临时表,我的目的只是想求平均值而已。用临时表没啥意义了。
很郁闷,我用的数据库版本低,不支持类似这样的语句:select avg(a) from (select first 100 table_1 as a from table order by table_1 desc) as b
不知道还有啥办法,期待高手啊~~~

liaosnet 发表于 2009-08-13 17:02

回复 #5 shiner 的帖子

写个存储过程好了~~取出前100行,然后做avg

zhaowuxing 发表于 2009-08-13 17:17

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]
查看完整版本: 求一SQL语句