相同的功能的两种sql脚本,为什么第二个的结果有重复项?

[复制链接]
查看11 | 回复8 | 2006-4-17 13:46:34 | 显示全部楼层 |阅读模式
表内容:
SQL> select * from grade_tab;
NAME CLASSGRADE
-------- ----- ----------
A1
60
B1
70
C1
80
D1
90
E1
95
F2
65
G2
70
H2
75
I2
80
J2
85
10 rows selected
脚本一:
select a.name, a.grade, a.class, b.avg_grade
from grade_tab a,
(select class, avg(grade) avg_grade from grade_tab group by class) b
where a.class = b.class
anda.grade > b.avg_grade;
结果:
NAME
GRADE CLAVG_GRADE
-------- ---------- -- ----------
C
80 1
79
D
90 1
79
E
95 1
79
I
80 2
75
J
85 2
75

脚本二:
select a.name, a.grade, a.class from grade_tab a, grade_tab b
where a.grade > (select avg(grade) from grade_tab where a.grade = b.grade);
结果:
NAME
GRADE CL
-------- ---------- --
C
801
I
80 2
D
901
E
951
C
801
I
80 2
J
85 2
脚本一的结果是对的, 脚本二的结果有重复。
为什么脚本二的结果有重复呀? 请指教!
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
强啊!
多谢指点!
以后要学会使用“执行计划”了。
最感谢的还是Kamus 教了一招解决问题的好方法---查看执行计划
:)
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
请问,我想启动 执行计划, 但是报错如下:
SQL> set autotrace on
SP2-0613: 无法验证 PLAN_TABLE 格式或实体
SP2-0611: 启用EXPLAIN报告时出现错误

知道是什么原因吗?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
最初由 laskiwallace 发布
[B]请问,我想启动 执行计划, 但是报错如下:
SQL> set autotrace on
SP2-0613: 无法验证 PLAN_TABLE 格式或实体
SP2-0611: 启用EXPLAIN报告时出现错误

知道是什么原因吗? [/B]

执行这个脚本plustrce
然后grant plustrace to username
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
还要在用户模式下执行utlxplan.sql 创建plan_table表
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
最初由 xie3000 发布
[B]
执行这个脚本plustrce
然后grant plustrace to username [/B]

请问是怎么执行吗:
SQL> @plustrace
SP2-0310: 无法打开文件"plustrace.sql"

脚本plustrace 是一个plustrace.sql脚本吗?
找不到呀?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
plustrace.sql在\sqlplus\admin下
utlxplan.sql在\ora92\rdbms\admin下
sql>@....\sqlplus\admin\plustrace.sql ;要写全路径,要不就在脚本所在的路径下执行
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
最初由 xie3000 发布
[B]plustrace.sql在\sqlplus\admin下
utlxplan.sql在\ora92\rdbms\admin下
[/B]

找到xie3000所说的文件了, 我是windows2000下的oracle8i,
文件名稍有不同: 其中一个是plustrce.sql
另外,plustrce.sql 中 让我用sys用户先执行catalog.sql再执行plustrce.sql。
请问这些脚本是不是一般在数据库创建后,就要由DBA主动去执行的了?
还有什么常用的脚本吗? 在哪里可以找到相关信息呢?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
这些文件一般在需要查看执行计划时才执行,其他的常用脚本的定义可以在文档中找到。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行