将行 ID 添加到 Snowflake SQL 中的表

Rad*_*ian 3 sql snowflake-schema snowflake-cloud-data-platform

我需要将具有唯一整数/散列的列添加到表中以用作行 ID。

我用这个查询创建了一个表 DUPLICATES:

CREATE TABLE duplicates AS
SELECT
    "a", "b", COUNT(*) as _count
FROM
    "table"
GROUP BY
    "a", "b"
HAVING 
    _count > 1
ORDER BY 
 _count desc
Run Code Online (Sandbox Code Playgroud)

现在我需要为每一行添加一个包含唯一 ID 的列。我试过了ALTER TABLE DUPLICATES ADD 'id' int identity(1,1),但是这会返回:SQL 编译错误:无法将具有非常量默认值的列 'id' 添加到非空表 'DUPLICATES'

我现在有点缺乏想法,因为关于 Snowflake SQL 的讨论还不广泛,而且 Snowflake 的帮助页面也没有帮助我。

Gor*_*off 5

一种简单的方法是使用row_number()

CREATE TABLE duplicates AS
    SELECT ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as id,
           "a", "b", COUNT(*) as _count
    FROM "table"
    GROUP BY "a", "b"
    HAVING  _count > 1
    ORDER BY _count desc;
Run Code Online (Sandbox Code Playgroud)