gpt4 book ai didi

sql - 从表中抽取大量行

转载 作者:行者123 更新时间:2023-12-02 08:12:15 25 4
gpt4 key购买 nike

我想从一个包含 1000 万到 2000 万行的表中提取大约500 万行样本。

由于行数较多,效率是关键。因此,我尽量避免对行进行排序,因此我避免使用我在类似问题中看到的 dbms_random.value 解决方案。

我尝试做如下的事情:

SELECT    *
FROM full_table
SAMPLE (CEIL(100 * 5000000 / (SELECT COUNT(*) FROM full_table)));

但是,我似乎无法在 SAMPLE 子句中进行算术运算(ORA-00933:SQL 命令未正确结束 - 我使用简单的 SAMPLE(10/2) 进行了尝试,但仍然得到相同的结果)。

这是一种合理的方法吗?如果是,我该如何计算示例子句中的行数?

最佳答案

您可以像这样将 PL/SQL 与动态 SQL 一起使用:

declare
cnt integer;
begin
select count(*) into cnt from full_table;
dbms_output.put_line(cnt);
execute immediate
'insert into target_table'
||' select * from full_tablesample (' || ceil(100 * 5000000/cnt) || ')';
end;

关于sql - 从表中抽取大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com