Mysql
對列中的每個不同值應用第 n 個出現次數
我有一個包含一列值的表,其中每個值出現的次數可變(即,一個值可能出現 1 次,另一個值可能出現 3 次)。我需要添加一個列來標識其對應值的出現序列#。
輸入表
輸出表
用於此的 SQL 是什麼?
在 mysql 5.5 中,您可以為此使用使用者定義的變數
CREATE TABLE tab1 (`SOURCE_VAL` varchar(1)) ; INSERT INTO tab1 (`SOURCE_VAL`) VALUES ('a'), ('a'), ('b'), ('c'), ('c'), ('c') ;
SELECT IF(@s_val = SOURCE_VAL,@rn := @rn +1 , @rn := 1) As SEQUENCE_VAL, @s_val := SOURCE_VAL as SOURCE_VAL FROM tab1,(SELECT @rn := 0, @s_val := '') t1 ORDER BY SOURCE_VAL
序列_VAL | SOURCE_VAL -----------: | :--------- 1 | 一種 2 | 一種 1 | b 1 | C 2 | C 3 | C
db<>在這裡擺弄
雪花作為 row_number
SELECT ROW_NUMBER() OVER (PARTITION BY SOURCE_VAL ORDER BY SOURCE_VAL DESC) SEQUENCE_VAL SOURCE_VAL FROM tab1