Mysql

對列中的每個不同值應用第 n 個出現次數

  • August 30, 2021

我有一個包含一列值的表,其中每個值出現的次數可變(即,一個值可能出現 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

引用自:https://dba.stackexchange.com/questions/298707