如何在不使用 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 BY
:ROW_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;
我正在尝试使用 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 BY
:ROW_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;