【发布时间】:2019-10-13 19:00:35
【问题描述】:
我目前有两张表,cts(time, symbol, open, close, high, low, volume) 和股息(time, symbol,股息)。我正在尝试创建第三个名为divide_percent 的表,其中包含时间、日期和百分比列。要获得股息的百分比,我相信公式是 ((close-(open+dividend))/open)*100。
但是,请求超出了 oraclexe 允许的大小,因此失败了,但我认为我的请求不应该那么大。
SQL> create table dividend_percent
2 as (select c.Time, c.Symbol, (((c.close-(c.open+d.dividend))/c.open)*100) P
RCNT
3 from cts c inner join dividend d
4 on c.Symbol=d.Symbol);
from cts c inner join dividend d
*
ERROR at line 3:
ORA-12953: The request exceeds the maximum allowed database size of 11 GB
是我写错了查询还是以这种方式效率低下?这两张桌子很大,但我觉得不大。
【问题讨论】:
-
您只是加入 Symbol,您不想使用日期和/或时间来缩小范围吗?否则,您将匹配多对多。另外,您真的想要另一个表还是只创建一个包含所需字段的视图?
-
是的,虽然现在我得到了第 2 行除数等于 0 的错误,所以我猜我的公式或数据也有问题。
-
查看是否存在 c.open = 0 的记录。如果是,则必须处理该条件。
-
在达到 11GB 上限之前,您还剩下多少空间?看
select sum(bytes)/1024/1024/1024 gb from dba_segments;