13:05:27 SQL> select * from t1;成品 零件
---------- ----------
成品F1 半成品A
成品F1 零件B
成品F1 零件C
成品F1 零件D
成品F1 零件E
半成品A 半成品F
半成品F 零件E已选择7行。已用时间: 00: 00: 00.15
13:06:20 SQL> select 成品,零件,ratio_to_report(1) over (partition by 成品) from
t1;成品 零件 RATIO_TO_REPORT(1)OVER(PARTITIONBY成品)
---------- ---------- ---------------------------------------
半成品A 半成品F 1
半成品F 零件E 1
成品F1 半成品A .2
成品F1 零件B .2
成品F1 零件C .2
成品F1 零件D .2
成品F1 零件E .2已选择7行。已用时间: 00: 00: 00.31
---------- ----------
成品F1 半成品A
成品F1 零件B
成品F1 零件C
成品F1 零件D
成品F1 零件E
半成品A 半成品F
半成品F 零件E已选择7行。已用时间: 00: 00: 00.15
13:06:20 SQL> select 成品,零件,ratio_to_report(1) over (partition by 成品) from
t1;成品 零件 RATIO_TO_REPORT(1)OVER(PARTITIONBY成品)
---------- ---------- ---------------------------------------
半成品A 半成品F 1
半成品F 零件E 1
成品F1 半成品A .2
成品F1 零件B .2
成品F1 零件C .2
成品F1 零件D .2
成品F1 零件E .2已选择7行。已用时间: 00: 00: 00.31
解决方案 »
- linux如何安装oracle数据库所需的包呢?
- 求救:如何将2条数据合并?
- ORA-00214错误,Oracle起不来
- 各位大侠好,一个简单问题PL/SQL的Select语句问题
- 是否能用一次查询查询出一部分字段的最大值和另一部分字段的平均值
- 一个简单的问题!!!!!!!!!!!!!
- sql里有没有相当于“剪切”的操作?
- Help me!请问Oracle中哪里有PL/SQL的详细帮助,象SQL Server中的T-SQL帮助一样的东西?
- ★★在sqlplus中怎么将查询的结果导出到一个txt文件中,默认存在什么地方,是用Spool吗,参数可以设置吗?★★
- Oracle中ddl与dml的区别
- !!冰天雪地裸体跪求oracle9i developer suite!!
- 求条查询语句:select * from a where 姓名 like '%x%' 如果x是变量如何写?
t1 group by 成品;成品 RATIO_TO_REPORT(SUM(1))OVER(PARTITIONBY成品)
---------- --------------------------------------------
半成品A 1
半成品F 1
成品F1 1已用时间: 00: 00: 00.00
13:07:57 SQL> select 零件,ratio_to_report(1) over (partition by 零件) from t1 gr
oup by 零件;零件 RATIO_TO_REPORT(1)OVER(PARTITIONBY零件)
---------- ---------------------------------------
半成品A 1
半成品F 1
零件B 1
零件C 1
零件D 1
零件E 1已选择6行。
---------- ---------- ----------
成品F1 半成品A 2
成品F1 零件B 2
成品F1 零件C 2
成品F1 零件D 2
成品F1 零件E 4
半成品A 半成品F 3
半成品F 零件E 3已选择7行。已用时间: 00: 00: 00.31
14:06:17 SQL> select cp,lj,sl,ratio_to_report(sum(sl)) over(partition by cp) pct
14:06:39 2 from tb_cp group by cp,lj,sl;CP LJ SL PCT
---------- ---------- ---------- ----------
半成品A 半成品F 3 1
半成品F 零件E 3 1
成品F1 半成品A 2 .166666667
成品F1 零件B 2 .166666667
成品F1 零件C 2 .166666667
成品F1 零件D 2 .166666667
成品F1 零件E 4 .333333333已选择7行。已用时间: 00: 00: 00.78
14:06:44 SQL>
你的回答我没看懂,后面的PCT为0.33333333是什么意思?
因为如下关系:
成品F1 半成品A 2
半成品A 半成品F 3
半成品F 零件E 3
成品F1 零件E 4
所以,"成品F1"对应的"零件E"的个数应为2*3*3+4=22.
怎么最终能得到如下的查询结果?
成品F1 零件E 22
写一个函数或者存储过程吧。
---------- ---------- ----------
成品F1 半成品A 2
半成品A 半成品F 3
半成品F 零件E 3
成品F1 零件E 4已用时间: 00: 00: 00.31
13:15:14 SQL> create or replace function f_ride(v_in varchar2)
13:15:24 2 return number
13:15:24 3 as
13:15:24 4 cursor c_tree(v_st varchar2) is select sl from tb_cp
13:15:24 5 start with CP=v_st connect by prior lj=cp;
13:15:24 6 v_return number;
13:15:24 7 begin
13:15:24 8 v_return:=1;
13:15:24 9 for v_ctree in c_tree(v_in) loop
13:15:24 10 v_return:=v_return*v_ctree.sl;
13:15:24 11 end loop;
13:15:24 12 return v_return;
13:15:24 13 end f_ride;
13:15:24 14 /函数已创建。已用时间: 00: 00: 00.62
13:17:46 SQL> select cp,sum(zsl) from (
13:17:53 2 select tb_cp.*,decode(level,1,f_ride(lj),0)*sl zsl,level lev
13:18:04 3 from tb_cp start with cp='成品F1' connect by prior lj=cp
13:18:07 4 ) t where t.lev=1 group by cp;CP SUM(ZSL)
---------- ----------
成品F1 22已用时间: 00: 00: 00.16
13:18:08 SQL>