如何在不使用 order by 的情况下从 table 或 Aster Teradata 中的视图获取示例数据?

How to get sample data from a table or a view in Aster Teradata without using order by?

我正在尝试使用 order by 使用以下代码从 Aster Teradata 中的 table 获取示例数据:

SELECT "col" 
FROM   (SELECT "col", 
               Row_number() 
                 OVER ( 
                   ORDER BY 1) AS RANK 
        FROM   "nisha_test"."test_table") a 
WHERE  rank <= 10000 

我想在不使用 order by 的情况下获得随机 10000 行。

您还可以使用 Teradata 中的 QUALIFY 子句来删除外部 SELECT:

SELECT col
FROM nisha_test.test_table
QUALIFY ROW_NUMBER() OVER (ORDER BY NULL) <= 10000

在 Teradata 中,我认为您可以在 ORDER BY 中使用常量值。您甚至可以完全排除 ORDER BYROW_NUMBER() OVER()

如果你想要一个样本,你应该使用内置的样本功能。

对于 Aster(或 Vantage MLE,但语法略有不同),有一个 RandomSample 运算符,例如

SELECT * FROM RandomSample (
  ON (SELECT 1) PARTITION BY 1 -- dummy data, but needed
  InputTable ('nisha_test.test_table')
  NumSample ('10000')
)

对于 Teradata,有 SAMPLE 子句,例如

select * 
from nisha_test.test_table 
SAMPLE 10000

我们可以使用 LIMIT 关键字从 table 或 Aster DB 中的视图中获取随机值。

select * from "nisha_test"."test_table" limit 10000;