免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2715 | 回复: 6

求一SQL语句 [复制链接]

论坛徽章:
0
发表于 2009-08-08 11:06 |显示全部楼层
怎么求得一表某字段按从大到小排序前 100 条的平均值。

论坛徽章:
0
发表于 2009-08-08 18:29 |显示全部楼层
分两步,一步把前100条放到临时表中,然后取平均值。

论坛徽章:
0
发表于 2009-08-08 21:15 |显示全部楼层
不使用临时表,可以解决吗?

论坛徽章:
0
发表于 2009-08-11 21:31 |显示全部楼层
为啥不用临时表呢?仅一个字段的临时表也好象没啥困难呀。

论坛徽章:
0
发表于 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
不知道还有啥办法,期待高手啊~~~

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-08-13 17:02 |显示全部楼层

回复 #5 shiner 的帖子

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

论坛徽章:
0
发表于 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:写个函数来支持你的这类情况.(我推荐这种,毕竟要考虑可移值性)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP