查看: 2167|回复: 6

这个查询有没有优化的余地?

[复制链接]
论坛徽章:
44
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562012新春纪念徽章
日期:2012-02-13 15:10:58
发表于 2009-10-11 17:12 | 显示全部楼层 |阅读模式
update c_tpa_sts_cell_ne a set dropcall_rate_delta=(dropcall_rate)/(select distinct decode(dropcall_rate,0,1,dropcall_rate) from c_tpa_sts_cell_ne where scan_start_time=to_date('2009-10-11 14:0:0','yyyy-mm-dd hh24.mi:ss')-1/24 and int_id=a.int_id and int_id is not null)-1
where scan_start_time='2009-10-11 14:0:0';

update c_tpa_sts_cell_ne a set dropcall_delta=(dropcall)/(select distinct decode(dropcall,0,1,dropcall) from c_tpa_sts_cell_ne where scan_start_time=to_date('2009-10-11 14:0:0','yyyy-mm-dd hh24.mi:ss')-1/24 and int_id=a.int_id and int_id is not null)-1
where scan_start_time='2009-10-11 14:0:0';


update c_tpa_sts_cell_ne a set block_rate_delta=(block_rate)/(select distinct decode(block_rate,0,1,block_rate) from c_tpa_sts_cell_ne where scan_start_time=to_date('2009-10-11 14:0:0','yyyy-mm-dd hh24.mi:ss')-1/24 and int_id=a.int_id and int_id is not null)-1
where scan_start_time='2009-10-11 14:0:0';

update c_tpa_sts_cell_ne a set succ_rate_delta=(succ_rate)/(select distinct decode(succ_rate,0,1,succ_rate) from c_tpa_sts_cell_ne where scan_start_time=to_date('2009-10-11 14:0:0','yyyy-mm-dd hh24.mi:ss')-1/24 and int_id=a.int_id and int_id is not null)-1
where scan_start_time='2009-10-11 14:0:0';

就是利用这个表和上个小时的增量比率来得到本小时的值
论坛徽章:
44
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562012新春纪念徽章
日期:2012-02-13 15:10:58
 楼主| 发表于 2009-10-11 17:13 | 显示全部楼层
能不能把这几个sql整合到一个?

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
发表于 2009-10-11 17:31 | 显示全部楼层
可以合成一条sql,最简单的方式就是
update tbl set (col1,col2,col3...)=(select .... from tbl2....) where .......

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:狗
日期:2009-10-08 19:42:37
发表于 2009-10-11 20:19 | 显示全部楼层
int_id这个id是主键吗?

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:狗
日期:2009-10-08 19:42:37
发表于 2009-10-11 20:21 | 显示全部楼层
上面的弄错了
select distinct decode(block_rate,0,1,block_rate) from c_tpa_sts_cell_ne where scan_start_time=to_date('2009-10-11 14:0:0','yyyy-mm-dd hh24.mi:ss')-1/24 and int_id=a.int_id and int_id is not null
这个查询不加distinct的时候可能抽出来多条数据吗?

使用道具 举报

回复
论坛徽章:
4
发表于 2009-10-11 20:41 | 显示全部楼层
条件不一样的
原帖由 junsansi 于 2009-10-11 17:31 发表
可以合成一条sql,最简单的方式就是
update tbl set (col1,col2,col3...)=(select .... from tbl2....) where .......

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-10-12 13:50 | 显示全部楼层

回复 #2 jlliuyi 的帖子

对主表的约束条件都是一样的,可尝试:

update a set col1=,col2=,col3= where scan_start_time='2009-10-11 14:0:0';

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表