2016-11-29 65 views
1

我有一個數據庫的問題。如何在mysql中建立等級?

,我有以下結構的表:

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 

我需要創建的每個名稱的最頻繁的功能等級和每種類型的排序降序排列的頻率。

例子:

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 

有沒有人知道該怎麼做這樣的事情?我用phpmyadmin使用mysql。

+1

歡迎堆棧溢出!你可以先參加[遊覽]並學習[問]一個很好的問題,然後創建一個[mcve]。這使我們更容易幫助你。 – Katie

+0

組合* name2 *和* type1 *開始用2編號? – trincot

+0

是的,因爲它們屬於同一類型。 – Felipe

回答

1

在MySQL中最簡單的方法是使用變量:

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;