在teradata中有没有等同于"ROWNUM“的东西?我必须用teradata实现下面的查询,它在oracle中运行得很好。有什么想法或建议吗?
INSERT INTO ADDRES(CITY,STATEPROVINCEID) SELECT 'sample',AA.ID FROM
AA WHERE ROWNUM<=1000发布于 2014-07-23 18:40:20
由于没有ORDER BY,您可以简单地使用:
INSERT INTO ADDRES(CITY,STATEPROVINCEID)
SELECT TOP 1000 'sample',AA.ID
FROM AA但这不是随机的,它只是在AMP上找到的前1000行。
要获取采样行,请执行以下操作:
INSERT INTO ADDRES(CITY,STATEPROVINCEID)
SELECT 'sample',AA.ID
FROM AA
SAMPLE 1000如果您是一名统计学家,并且需要一个真正的随机样本,请切换到:
SAMPLE RANDOMIZED ALLOCATION 1000您还可以获取多个样本,最多16个,例如
SAMPLE 1000,2000 --use column SAMPLEID to know which row belongs to which sample 或分数样本:
SAMPLE 0.1 -- 10% of the rows或分层样本,即来自不同组的样本:
SAMPLE WHEN col< 0 THEN 10
WHEN col <100 THEN 20
ELSE 50
END发布于 2014-07-23 23:24:39
我不确定它是否对您的情况没有帮助,但为了将来参考,Teradata有一个ROW_NUMBER()函数。它的工作原理与其他所有人的基本相同:
ROW_NUMBER over ([PARTITION by <column>] ORDER by <column1>[<column2]...]).Teradata还有一个额外的优势,那就是可以使用QUALIFY对其进行约束,而不必使用派生表。
Select
...
from
...
QUALIFY ROW_NUMBER over (order by...)https://stackoverflow.com/questions/24906623
复制相似问题