2017-07-20 15 views
0

mysqlでrank()から(partition by x、order by y desc)新しい列 "LoginRank"を作成するのは完全に困惑しています。ランク()overパーティションby mysql

SQL Serverから、 "login"でグループ化され、 "id"で順序付けされた列 "Loginrank"を作成するために、次のクエリを作成します。

select ds.id, 
     ds.login, 
     rank() over(partition by ds.login order by ds.id asc) as LoginRank 
from tablename.ds 

以下の表があります。

create table ds (id int(11), login int(11)) 
insert into ds (id, login) 
values (1,1), 
    (2,1), 
    (3,1), 
    (4,2), 
    (5,2), 
    (6,6), 
    (7,6), 
    (8,1) 

多くの既存のmysql修正をデータセットに適用しようとしましたが、引き続き問題が発生しました。

ご協力いただきまして誠にありがとうございます。 ありがとう!

答えて

1

このクエリを試す: - MySqlはRank()関数をサポートしています。

select result.id,result.login,result.rank from (
    SELECT id, 
       login, 
       IF([email protected],@curRank:[email protected],@curRank:[email protected]_sequence) AS rank, 
       @_sequence:[email protected]_sequence+1, 
       @last:=login 
    FROM  ds , (SELECT @curRank := 1, @_sequence:=1, @last:=0) r 
    ORDER BY id asc) as result; 

希望すると助かります!

+0

ありがとうございます。私は上記のあなたの反応を活用し、それはうまくいった。 –

+0

@SamuelEllettあなたの歓迎:) –

+7

「サポートしていませんか?**」 – Barmar