2

次のように、「gift_limit_count」と「score」の 2 つのテーブルがあります。

「gift_limit_count」には以下 が含まれます:

gift_id
gift_limit ギフト_
金額

次を含む「スコア」 :

user_id
user_name
user_score

ユーザーの「user_score」カウントが次に高い「gift_limit」に達すると、「gift_amount」が授与されます。私がやりたいのは、たとえば、次の賞に最も近い上位 10 人のユーザーのリストを表示することです。

例えば:

David(user_name) は、£40 (gift_amount) を授与されるまであと 1 ポイントです。
Suzi は £20 を授与されるまであと 2 ポイントです。
Ian は £40 を授与さ
れるまであと 2 ポイントです。 £30が授与されました
...
...

4

2 に答える 2

2
Select S.user_id, S.user_name, S.user_score
    , GLC.gift_limit, GLC.gift_amount
From    (
        Select S1.user_id
            , Min( GLC1.gift_limit ) As NextLimit
        From score As S1
            Join gift_limit_count As GLC1
                On GLC1.gift_limit > S1.user_score
        Group By S1.user_id
        ) As Z
    Join score As S
        On S.user_id = Z.user_id
    Join gift_limit_count As GLC
        On GLC.gift_limit = Z.NextLimit
Order By ( gift_limit - user_score )
Limit 10
于 2012-04-26T17:28:53.273 に答える
1

min( score - gift_limit ) (スコア < gift_limit ) に基づく結合を使用してクエリを実行し、各人の最低値で並べ替えることができる場合があります。グループ化して、1 人あたり 1 つの回答を得ることもできます。

于 2012-04-26T17:20:55.870 に答える