2012-02-12 9 views
0

私のウェブサイトでは、ユーザーは入札を記録できます。各入札単価は個別に保存され、ユーザーIDに関連付けられます。ユーザーは、サイトに表示される1つの総合入札単価を加算するために使用される多くの入札を持つことができます。mysqlは特定の結果の行番号を取得します

私がSQLでやろうとしているのは、ユーザー全体の入札単価が結果セットからの位置です。

私が使用しているSQLは以下の通りですが、私はコマンドでグループを使用するときに問題が発生 - 順序がユーザーの和でデフォルトのデシベルの順に戻すのではなくているようだが金額を入札:

SET @rowcount = 0; 
SELECT rowCount, userId FROM (
    SELECT userId, @rowcount := @rowcount + 1 as rowCount, sum(amount) as amount FROM bids group by userId order by amount desc 
) t when product = xxxxx 

誰にでも可能かどうか分かりますか?

答えて

1

:私はそれを正しく理解すれば

SET @rowcount = 0; 
SELECT rowCount, userId FROM (
    SELECT userId, @rowcount := @rowcount + 1 as rowCount from 
    (select sum(amount) as amount, userId FROM bids group by userId) s 
    order by s.amount desc 
) t where product = xxxxx 
0

あなたは既に試しましたか?あなたはサブクエリ外の行数増分を移動する必要が

SELECT @rownum:[email protected]+1 ‘rank’, userId FROM (SELECT product, userId, sum(amount) AS amount FROM bids GROUP BY userId) t, (SELECT @rownum:=0) r WHERE t.product = xxxx ORDER BY t.amount DESC; 
0

あなたはこのような何かを試みることができます。 WHEREの条件を内部に入れます。そうしないと、サブクエリは特定のユーザーのすべての製品の入札単価を合計します。

SET @rowcount = 0; 
SELECT @rowCount:[email protected]+1 as rowcount, userId, amount FROM 
(
    SELECT userId, sum(amount) as amount 
    FROM bids 
    WHERE product = xxxxx 
    GROUP BY userId 
    ORDER BY amount DESC 
) t 
関連する問題