【问题标题】:ROWNUM equivalent in TeradtaTeradata 中的 ROWNUM 等效项
【发布时间】:2014-09-14 09:49:45
【问题描述】:

在 teradata 中是否有与“ROWNUM”等效的内容?我必须在 teradata 中实现以下查询,它在 oracle 上运行良好。有什么想法或建议吗?

    INSERT INTO ADDRES(CITY,STATEPROVINCEID) SELECT 'sample',AA.ID FROM
    AA WHERE ROWNUM<=1000

【问题讨论】:

    标签: teradata


    【解决方案1】:

    由于没有 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
    

    【讨论】:

    • 'sample' 只是我要插入的字符串,我在 AA 中获取 id 的值,我要插入的行数可能会有所不同。当我尝试您的示例代码时,它运行但没有插入行。 0 Row(s) Inserted Query 1 of 1 elapsed time (seconds) - Total: 0.107, SQL query: 0.107, Building output: 0
    • 奇怪,你用的是什么客户端?当您只运行选择并且它不返回任何行时,表应该是空的:-)
    • 我正在使用松鼠。 AA 表仅包含 ID 作为只有 10 个值的列,我正在创建 ADDRES 表,因为我正在使用 AA.ID 值插入 1000 条记录
    • 您的源表中只有十行,您想从中选择 TOP 1000?奇怪,但问题可能是目标表的定义,做一个 SHOW TABLE target; 并且它是一个 CREATE SET TABLE,即在插入期间静默删除重复行/选择。将其更改为 MULTISET,然后使用 SAMPLE WITH REPLACEMENT 1000 通过单个语句插入 1000 行。
    • 它的 MultiSet 表有两列 ADDRES(CITY,STATEPROVINCEID)。在 oracle 中它会自动填充重复值,这就是我需要它的原因。
    【解决方案2】:

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

    ROW_NUMBER over ([PARTITION by <column>] ORDER by <column1>[<column2]...]).
    

    Teradata 的另一个优势是能够使用 QUALIFY 对其进行约束,而不必使用派生表。

    Select
    ...
    from
    ...
    QUALIFY ROW_NUMBER over (order by...)
    

    【讨论】:

      猜你喜欢
      • 2015-06-27
      • 2017-04-02
      • 2015-06-13
      • 1970-01-01
      • 2011-12-19
      • 2015-05-28
      • 2018-08-15
      • 1970-01-01
      • 2021-11-27
      相关资源
      最近更新 更多