首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Teradta中的ROWNUM等价物

Teradta中的ROWNUM等价物
EN

Stack Overflow用户
提问于 2014-07-23 17:21:49
回答 2查看 10.7K关注 0票数 2

在teradata中有没有等同于"ROWNUM“的东西?我必须用teradata实现下面的查询,它在oracle中运行得很好。有什么想法或建议吗?

代码语言:javascript
复制
    INSERT INTO ADDRES(CITY,STATEPROVINCEID) SELECT 'sample',AA.ID FROM
    AA WHERE ROWNUM<=1000
EN

回答 2

Stack Overflow用户

发布于 2014-07-23 18:40:20

由于没有ORDER BY,您可以简单地使用:

代码语言:javascript
复制
INSERT INTO ADDRES(CITY,STATEPROVINCEID) 
SELECT TOP 1000 'sample',AA.ID 
FROM AA

但这不是随机的,它只是在AMP上找到的前1000行。

要获取采样行,请执行以下操作:

代码语言:javascript
复制
INSERT INTO ADDRES(CITY,STATEPROVINCEID) 
SELECT 'sample',AA.ID 
FROM AA
SAMPLE 1000

如果您是一名统计学家,并且需要一个真正的随机样本,请切换到:

代码语言:javascript
复制
SAMPLE RANDOMIZED ALLOCATION 1000

您还可以获取多个样本,最多16个,例如

代码语言:javascript
复制
SAMPLE 1000,2000 --use column SAMPLEID to know which row belongs to which sample 

或分数样本:

代码语言:javascript
复制
SAMPLE 0.1 -- 10% of the rows

或分层样本,即来自不同组的样本:

代码语言:javascript
复制
SAMPLE WHEN col< 0 THEN 10
       WHEN col <100 THEN 20 
       ELSE 50 
END
票数 3
EN

Stack Overflow用户

发布于 2014-07-23 23:24:39

我不确定它是否对您的情况没有帮助,但为了将来参考,Teradata有一个ROW_NUMBER()函数。它的工作原理与其他所有人的基本相同:

代码语言:javascript
复制
ROW_NUMBER over ([PARTITION by <column>] ORDER by <column1>[<column2]...]).

Teradata还有一个额外的优势,那就是可以使用QUALIFY对其进行约束,而不必使用派生表。

代码语言:javascript
复制
Select
...
from
...
QUALIFY ROW_NUMBER over (order by...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24906623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档