【发布时间】:2019-01-09 22:14:32
【问题描述】:
我正在寻找一些帮助来连接两个临时表以获得最终输出。
我必须创建不同的表,一个来计算花费的时间,另一个来计算总和
很遗憾,我无法在一张表中执行此操作,因为有很多重复的时间值导致计算错误。
下面是代码:
CREATE TABLE KPI_REPORT (
USERNAME CHAR(50),
HOURS NUMBER(10),
MINUTES NUMBER(10),
TOTAL_CTN NUMBER(10),
AVERAGE_CTN NUMBER(10)
);
CREATE TABLE TOTAL_TIME (
USERNAME CHAR(50),
HOURS NUMBER(10),
MINUTES NUMBER(10)
);
CREATE TABLE TOTAL_CARTONS (
USERNAME CHAR(50),
TOTAL_CTN NUMBER(10)
);
INSERT INTO Total_Time ( Username, Hours, Minutes )
select
ia.username --username
,ROUND( SUM( ia.dtime3-ia.dtime1 ) * 24,2 ) --hours
,ROUND( SUM( ( ia.dtime3-ia.dtime1 ) * 24 ) * 60,2 ) --minutes
from
actual_db_1 ia
where
to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
and ia.site = '7'
and ia.from_location = 'ORDERPICK'
and ia.queue like 'LL%'
group by
ia.username;
COMMIT;
INSERT INTO Total_Cartons ( Username, Total_Ctn )
select
ia.USERNAME --username
,SUM( pm.qty/pm.packfactor_1 ) --cartons
from
actual_db_1 ia,
actual_db_2 pm
where
to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
and ia.site = '7'
and ia.queue like 'LL%'
and pm.code = product
group by
ia.username;
COMMIT;
INSERT INTO KPI_Report ( Username, Hours, Minutes, Total_Ctn, Average_Ctn )
select
Total_Time.Username
,Total_Time.Hours
,Total_Time.Minutes
,Total_Cartons.Total_Ctn
,ROUND( ( SUM( ia.qty/pm.packfactor_1 ) ) / ( SUM( ia.dtime3-ia.dtime1) * 24 ),2 )
from
Total_Time
,Total_Cartons
where
Total_Time.Username = Total_Cartons.Username
group by
Total_Time.Username
,Total_Time.Hours
,Total_Time.Minutes
,Total_Cartons.Total_Ctn
order by
ia.username;
COMMIT;
感谢任何帮助,因为我被困住了。
【问题讨论】:
-
中间表会带来很高的磁盘读写开销。 (因为这些不是真正的临时表,所以在重用之前清除持久记录的额外开销。)您是否测试过仅查询基础表并加入结果集?
-
除此之外,您应该发布一些示例输入数据和示例输出,即从示例派生的
KPI_Report的所需内容。
标签: sql oracle temp-tables