相关疑难解决方法(0)

ora_hash是否具有确定性?

我正在使用Oracle数据库,我需要能够在表中对数据进行分区.据我所知,Rracle有一个ora_hash函数,可以将数据分区为桶.ora_hash函数是否确定?

在我的程序中,我将进行几个不同的数据库查询,每个查询都要求一个不同的桶号.

例如,在一个查询中,我可能会要求前两个桶:

SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
Run Code Online (Sandbox Code Playgroud)

在随后的查询中,我可能会要求第2和第3个桶:

SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,ora_hash是否总是将表分成完全相同的10个桶?假设表中的数据没有改变.第二个桶(桶1)在两个查询中是否相同?

有文档表明,种子值使oracle能够为同一数据集返回不同的结果.所以我假设如果我不使用种子值,那么ora_hash将是确定性的.请参阅文档.

oracle ora-hash

12
推荐指数
2
解决办法
9490
查看次数

从Oracle抽样,需要确切的结果数量(样本条款)

我试图从Peoplesoft数据库中随机抽取一个人口样本.在线搜索让我认为select语句的Sample子句可能是我们使用的可行选项,但是我无法理解Sample子句如何确定返回的样本数.我查看了这里找到的oracle文档:http: //docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10002.htm#i2065953

但上述参考仅讨论了用于创建示例的语法.我的问题的原因是我需要了解样本百分比如何确定返回的样本大小.似乎它将随机数应用于您要求的百分比,然后使用种子数来计算每个"n"记录.我们的要求是我们提取一定数量的样本,例如,它们是随机选择的,并且它们代表整个表格(或者至少是我们用过滤器选择的数据分组)

如果我需要大约100个项目的样本,在10200个项目的人口中,我可以使用此声明:

SELECT * FROM PS_LEDGER SAMPLE(1) --1 % of my total population
WHERE DEPTID = '700064' 
Run Code Online (Sandbox Code Playgroud)

但是,我们需要提取一定数量的样本(在这种情况下为100),这样我就可以选择一个样本大小,几乎总是返回超过我需要的数量,然后将其修剪下来IE

SELECT Count(*) FROM PS_LEDGER SAMPLE(2.5) --this percent must always give > 100 items
WHERE DEPTID = '700064' and rownum < 101
Run Code Online (Sandbox Code Playgroud)

我担心的是,我的样本不能统一代表整个人口.例如,如果示例函数在创建自己的随机生成的种子后拉动每个N记录,则选择rownum <101将切断从表格底部选择的所有记录.我正在寻找的是一种从表格中提取100条记录的方法,这些记录是随机选择的,并且相当代表整个表格.请帮忙!!

oracle sample random-sample

5
推荐指数
2
解决办法
7817
查看次数

散列函数在Java中仅用5位数字生成散列值

我已经使用hashCode()StringAPI的方法,它为以下代码生成的值为99162322:

String str = "hello";           
System.out.println(str.hashCode());
Run Code Online (Sandbox Code Playgroud)

是否有任何Java API可以生成仅5位数字(63346)的哈希值,例如下面的Oracle SQL?

select ORA_HASH('hello','99999') from dual  --63346
Run Code Online (Sandbox Code Playgroud)

java oracle hash

4
推荐指数
2
解决办法
4719
查看次数

标签 统计

oracle ×3

hash ×1

java ×1

ora-hash ×1

random-sample ×1

sample ×1