在 SQL 中使用分区子句时为序列分配 ID
Assigning an ID to a sequence when using partition clauses in SQL
当尝试使用 partition by 子句识别特定序列时,可以用 row_number.
标记分区中的每一行
select *,
row_number() over(partition by x,y order by z desc) as rn,
from table ;
您将如何为每个分区分配特定的 ID(例如哈希)?
您可以使用 dense_rank()
:
枚举分区
select t.*,
row_number() over (partition by x, y order by z desc) as with_partition_seqnum,
dense_rank() over (order by x, y) as partition_seqnum
from t;
生成 has 的一种方法是 HASH_BYTES
函数:
SELECT *, HASHBYTES('SHA2_256', CONCAT(x, '^', y)) AS hash FROM t;
当尝试使用 partition by 子句识别特定序列时,可以用 row_number.
标记分区中的每一行select *,
row_number() over(partition by x,y order by z desc) as rn,
from table ;
您将如何为每个分区分配特定的 ID(例如哈希)?
您可以使用 dense_rank()
:
select t.*,
row_number() over (partition by x, y order by z desc) as with_partition_seqnum,
dense_rank() over (order by x, y) as partition_seqnum
from t;
生成 has 的一种方法是 HASH_BYTES
函数:
SELECT *, HASHBYTES('SHA2_256', CONCAT(x, '^', y)) AS hash FROM t;