如何维护所有记录分组并将其存储在单独的表中。
基表:
对 COLA 、 COLB 上的数据进行分组并对 COLC 求和
Select COLA,COLB,SUM(COLC)
FROM TAB2
然后使用 Sequence 生成密钥。
需要维护的输出如下。 考虑到有 100 个执行 group by 的列,我们如何维持这种关系
选项 1:尝试下面的查询来获取结果,但它看起来确实很有效。
Select TAB1.KEY , TAB2.KEY
FROM TAB1
INNER JOIN TAB2 ON TAB1.COLA=TAB2.COLA
AND TAB2.COLB=TAB2.COLB
选项2:在对数据进行分组和求和时,以逗号分隔的键存储可能在clob列中,然后在不同的sql中再次将其分解。
RTRIM(XMLAGG(XMLELEMENT(E,KEY,',').EXTRACT('//text()') ).GetClobVal(),',')
因此,如果需要连接 N 列,其中一些恰好为空,那么最好使用 standard_hash 进行连接。 比如:
from table_1 a
join table_2 b on (
standard_hash(a.col||'|'||a.col2||...||'|'||a.coln, 'SHA512')=
standard_hash(b.col||'|'||b.col2||...||'|'||b.coln, 'SHA512')
)
该函数也可用于创建索引。我的建议就这么多了。 我发现包含 sum 的表有一个大问题。当第一个表上有一些插入、更新或删除时,你能确定它会同步吗?我宁愿创建一个视图或物化视图。不过,当您拥有大量数据时,可能会出现问题。有分区吗?嗯,你应该比我更了解你的业务的各个方面......