有没有相当于" ROWNUM"在teradata?我必须在teradata中实现以下查询,它与oracle运行良好。任何想法或建议?
INSERT INTO ADDRES(CITY,STATEPROVINCEID) SELECT 'sample',AA.ID FROM
AA WHERE ROWNUM<=1000
答案 0 :(得分:3)
由于没有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
答案 1 :(得分:1)
我不确定它会对您的情况有所帮助,但为了将来参考,Teradata有一个ROW_NUMBER()函数。它的工作原理与其他人一样:
ROW_NUMBER over ([PARTITION by <column>] ORDER by <column1>[<column2]...]).
Teradata的另一个优势是能够使用QUALIFY
限制它,而不必使用派生表。
Select
...
from
...
QUALIFY ROW_NUMBER over (order by...)