2016-11-29 10 views
1

Ich habe ein Problem mit der Datenbank.Wie erstelle ich einen Rang in mysql?

Ich habe eine Tabelle mit der folgenden Struktur:

name type data frequen 
name1 type1 d1  10 
name2 type1 d2  15 
name2 type1 d3  25 
name2 type2 d4  02 
name3 type2 d5  05 
name3 type3 d6  20 

Ich brauche einen Rang der häufigsten Merkmale von jedem Namen und jeder Art zu schaffen, indem die Frequenz in absteigender Reihenfolge zu sortieren.

Beispiel:

name type data frequen rank 

name1 type1 d1  10  1 
name2 type1 d2  15  2 
name2 type1 d3  25  3 
name2 type2 d4  02  1 
name3 type2 d5  05  2 
name3 type3 d6  20  1 

Würde jemand wissen, wie so etwas zu tun? Ich verwende mysql mit phpmyadmin.

+1

Willkommen bei Stack-Überlauf! Du kannst zuerst die [Tour] nehmen und eine gute Frage [fragen] und ein [mcve] erstellen. Das erleichtert es uns, Ihnen zu helfen. – Katie

+0

für die Kombination * Name2 * und * Typ1 * beginnt die Nummerierung mit 2? – trincot

+0

Ja, weil sie vom gleichen Typ sind. – Felipe

Antwort

1

Der einfachste Weg, dies in MySQL zu tun ist, mit Variablen:

select t.*, 
     (@rn := if(@t = type, @rn + 1, 
        if(@t := type, 1, 1) 
        ) 
     ) as rank 
    from t cross join 
     (select @t := '', @rn := 0) params 
    order by name, freq;