sql - 将行 ID 添加到 Snowflake SQL 中的表

标签 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
现在我需要为每一行添加一个包含唯一 ID 的列。我试过 ALTER TABLE DUPLICATES ADD 'id' int identity(1,1) ,但是这会返回:SQL 编译错误:无法将具有非常量默认值的列 'id' 添加到非空表 'DUPLICATES'。
我现在有点缺乏想法,因为关于 Snowflake SQL 的讨论还不广泛,而且 Snowflake 的帮助页面也没有帮助我。

最佳答案

一种简单的方法是使用 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;

关于sql - 将行 ID 添加到 Snowflake SQL 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010378/

相关文章:

php - 使用 PHP 和 SQL 更新用户状态

data-warehouse - 雪花日期维度

snowflake-cloud-data-platform - 雪花缓存

database - 共享数据库上的数据屏蔽策略错误

SQL 从表中选择行并更新相同的行

SQL 查询 3 个表

sql - 雪花: Conversion error of an teradata query to snow sql

sql - 根据特定条件加入 Snowflake 中的表

sql - 雪花 CLI (Snowsql) - 查询标记

mysql - 使用单个查询更新多个表