楼主: leonarding

【话题讨论】有场景有数据,采纳者赠送全部pub币,速进

[复制链接]
论坛徽章:
22
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152014年世界杯参赛球队: 比利时
日期:2014-06-15 20:40:142014年世界杯参赛球队: 科特迪瓦
日期:2014-06-30 19:29:262014年世界杯参赛球队:西班牙
日期:2014-07-08 21:49:56ITPUB元老
日期:2014-08-04 21:10:48优秀写手
日期:2014-09-24 06:00:13itpub13周年纪念徽章
日期:2014-10-03 10:51:25itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50
21#
发表于 2014-6-18 21:10 | 只看该作者
野花开始解答题目了。。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
22#
发表于 2014-6-18 21:26 | 只看该作者
udfrog 发表于 2014-6-18 11:07
是啊,盛哥多来开发版逛逛
单就sql的角度来讲,写成4楼的就可以了。
让oracle决定是先做group by还是先 ...

我也觉得4楼就好了。你这个ren2不就是个带聚合的物化视图嘛。

使用道具 举报

回复
论坛徽章:
17
生肖徽章2007版:猴
日期:2015-07-24 10:50:33紫水晶
日期:2015-09-14 19:29:07萤石
日期:2015-09-14 19:24:48萤石
日期:2015-09-13 14:30:02萤石
日期:2015-09-11 23:05:02红宝石
日期:2015-09-11 23:04:43萤石
日期:2015-09-11 23:04:27生肖徽章2007版:兔
日期:2015-07-31 16:43:10生肖徽章2007版:龙
日期:2015-07-24 10:51:00生肖徽章2007版:龙
日期:2015-07-24 10:50:51
23#
发表于 2014-6-18 21:48 | 只看该作者
newkid 发表于 2014-6-18 21:26
我也觉得4楼就好了。你这个ren2不就是个带聚合的物化视图嘛。

我觉得18楼的写的也蛮好的吗 清晰简明易懂  比4楼差哪里了啊  怎么大家都推荐4楼啊  我感觉18楼的好啊

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
24#
发表于 2014-6-18 21:49 | 只看该作者
苏上人 发表于 2014-6-18 21:48
我觉得18楼的写的也蛮好的吗 清晰简明易懂  比4楼差哪里了啊  怎么大家都推荐4楼啊  我感觉18楼的好啊

那就支持18#

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
25#
发表于 2014-6-18 22:02 | 只看该作者
苏上人 发表于 2014-6-18 21:48
我觉得18楼的写的也蛮好的吗 清晰简明易懂  比4楼差哪里了啊  怎么大家都推荐4楼啊  我感觉18楼的好啊

GROUP BY的列太多。

使用道具 举报

回复
招聘 : Oracle 课程老师
论坛徽章:
48
19周年集字徽章-周
日期:2019-09-03 17:47:002011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192014年世界杯参赛球队: 俄罗斯
日期:2014-07-17 17:21:42ITPUB伯乐
日期:2014-07-17 14:45:422014年世界杯参赛球队: 希腊
日期:2014-06-20 16:01:122014年世界杯参赛球队:克罗地亚
日期:2014-06-12 16:53:56马上加薪
日期:2014-04-25 14:18:13目光如炬
日期:2014-04-21 06:00:12马上有房
日期:2014-03-31 15:10:37
26#
 楼主| 发表于 2014-6-19 12:29 | 只看该作者
苏上人 发表于 2014-6-18 11:49
select   a.*,b.contractinuredate,b.contractpausedate,max(c.rentalsum)  
    from  finances_sum a,fi ...

4#苏上人 SQL执行结果报错,请见1楼

使用道具 举报

回复
招聘 : Oracle 课程老师
论坛徽章:
48
19周年集字徽章-周
日期:2019-09-03 17:47:002011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192014年世界杯参赛球队: 俄罗斯
日期:2014-07-17 17:21:42ITPUB伯乐
日期:2014-07-17 14:45:422014年世界杯参赛球队: 希腊
日期:2014-06-20 16:01:122014年世界杯参赛球队:克罗地亚
日期:2014-06-12 16:53:56马上加薪
日期:2014-04-25 14:18:13目光如炬
日期:2014-04-21 06:00:12马上有房
日期:2014-03-31 15:10:37
27#
 楼主| 发表于 2014-6-19 12:31 | 只看该作者
lastwinner 发表于 2014-6-18 20:43
楼主帅哥好!
先给出测试数据的脚本吧,详阅 http://www.itpub.net/thread-1348543-1-1.html

哈,且听 野花真知灼见
《提问的智慧》 已学习,建表和插入数据脚本 请见附件(1楼 )

使用道具 举报

回复
招聘 : Oracle 课程老师
论坛徽章:
48
19周年集字徽章-周
日期:2019-09-03 17:47:002011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192014年世界杯参赛球队: 俄罗斯
日期:2014-07-17 17:21:42ITPUB伯乐
日期:2014-07-17 14:45:422014年世界杯参赛球队: 希腊
日期:2014-06-20 16:01:122014年世界杯参赛球队:克罗地亚
日期:2014-06-12 16:53:56马上加薪
日期:2014-04-25 14:18:13目光如炬
日期:2014-04-21 06:00:12马上有房
日期:2014-03-31 15:10:37
28#
 楼主| 发表于 2014-6-19 12:47 | 只看该作者
newkid 发表于 2014-6-18 22:02
GROUP BY的列太多。

18#的报错了,group by 中不能有 星号 吧  例如 a.*

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
29#
发表于 2014-6-19 13:15 | 只看该作者
leonarding 发表于 2014-6-19 12:47
18#的报错了,group by 中不能有 星号 吧  例如 a.*




如下2中都可以, 效率估计都差不多

--method 1
SQL> select  a.iid,
  2          a.COPERATIONID,
  3          a.CURRENCYKINDCODE,
  4          a.VALIDITYFLAG,
  5          b.contractinuredate,
  6          b.contractpausedate,
  7          max(c.rentalsum) max_rentalsum
  8    from finances_sum a,
  9         finances_con b,
10         finances_ren c
11   where a.coperationid = b.coperationid
12     and a.coperationid = c.coperationid
13     and a.validityflag = '1'
14     and c.validityflag = '1'
15  group by a.iid,
16           a.COPERATIONID,
17           a.CURRENCYKINDCODE,
18           a.VALIDITYFLAG,
19           b.contractinuredate,
20           b.contractpausedate
21  order by 1;
       IID COPERATIONID CURRENCYKINDCODE VALIDITYFLAG CONTRACTINUREDATE CONTRACTPAUSEDATE MAX_RENTALSUM
---------- ------------ ---------------- ------------ ----------------- ----------------- --------------------
       185           62 CNY              1            2014/1/1          2014/12/31        500000
       186           62 ENU              1            2014/1/1          2014/12/31        500000
       187           61 CNY              1            2014/1/1          2014/12/31        500000
       188           61 ENU              1            2014/1/1          2014/12/31        500000
       189           60 CNY              1            2014/1/1          2014/12/31        50
       190           59 CNY              1            2014/1/1          2014/12/31        300000
       191           58 CNY              1            2014/1/1          2014/12/31        400000
       192           57 CNY              1            2010/3/8          2010/5/8          500
8 rows selected
SQL>

--method 2
SQL> select t1.iid,
  2         t1.COPERATIONID,
  3         t1.CURRENCYKINDCODE,
  4         t1.VALIDITYFLAG,
  5         t1.contractinuredate,
  6         t1.contractpausedate,
  7         t2.max_rentalsum
  8    from (select a.iid,
  9                 a.COPERATIONID,
10                 a.CURRENCYKINDCODE,
11                 a.VALIDITYFLAG,
12                 b.contractinuredate,
13                 b.contractpausedate
14            from finances_sum a, finances_con b
15           where a.validityflag = '1'
16             and a.coperationid = b.coperationid) t1,
17         (select coperationid,
18                 max(rentalsum) max_rentalsum
19            from finances_ren
20           where validityflag = '1'
21           group by coperationid) t2
22   where t1.coperationid = t2.coperationid
23  order by t1.iid;
       IID COPERATIONID CURRENCYKINDCODE VALIDITYFLAG CONTRACTINUREDATE CONTRACTPAUSEDATE MAX_RENTALSUM
---------- ------------ ---------------- ------------ ----------------- ----------------- --------------------
       185           62 CNY              1            2014/1/1          2014/12/31        500000
       186           62 ENU              1            2014/1/1          2014/12/31        500000
       187           61 CNY              1            2014/1/1          2014/12/31        500000
       188           61 ENU              1            2014/1/1          2014/12/31        500000
       189           60 CNY              1            2014/1/1          2014/12/31        50
       190           59 CNY              1            2014/1/1          2014/12/31        300000
       191           58 CNY              1            2014/1/1          2014/12/31        400000
       192           57 CNY              1            2010/3/8          2010/5/8          500
8 rows selected
SQL>




使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
30#
发表于 2014-6-19 14:46 | 只看该作者
优化???需要看执行计划,决定建啥索引啊。。。

使用道具 举报

回复

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

本版积分规则 发表回复

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